[英]Log4j Configuration issues - log4j:WARN Please initialize the log4j system properly
[英]Please initialize the log4j system properly warning
这是错误消息 -
log4j:WARN No appenders could be found for logger (SerialPortUtil).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
这是SerialPortUtil
类中的调用 -
private static final Logger log = Logger.getLogger(SerialPortUtil.class.getSimpleName());
.
.
.
log.info("Serial port " + port.getName() + " is available");
这是我的 log4j.properties 文件的内容 -
log4j.rootLogger=DebugAppender
#Debug logging
log4j.appender.DebugAppender=org.apache.log4j.RollingFileAppender
log4j.appender.DebugAppender.Threshold=DEBUG
log4j.appender.DebugAppender.File=activityLog.log
log4j.appender.DebugAppender.MaxFileSize=200KB
log4j.appender.DebugAppender.MaxBackupIndex=5
log4j.appender.DebugAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.DebugAppender.layout.ConversionPattern=%d{DATE} %t - %m%n
并且属性文件在类路径上。
一切对我来说都是正确的,那么发生了什么? DEBUG
阈值不应该也捕获INFO
日志记录吗?
添加代码
BasicConfigurator.configure();
在您的静态主类中,如下所示..
注意:添加“\\hadoop-2.7.1\\share\\hadoop\\common\\lib\\commons-logging-1.1.3.jar & \\hadoop-2.7.1\\share\\hadoop\\common\\lib\\log4j-1.2.17.jar” jar " 作为外部引用
import org.apache.log4j.BasicConfigurator;
public class ViewCountDriver extends Configured implements Tool{
public static void main(String[]args) throws Exception{
BasicConfigurator.configure();
int exitcode = ToolRunner.run(new ViewCountDriver(), args);
System.exit(exitcode);
}
}
从错误消息中的链接:
当无法找到默认配置文件 log4j.properties 和 log4j.xml 并且应用程序未执行显式配置时,就会发生这种情况。 log4j 使用 Thread.getContextClassLoader().getResource() 定位默认配置文件,不直接检查文件系统。 知道放置 log4j.properties 或 log4j.xml 的适当位置需要了解正在使用的类加载器的搜索策略。 log4j 不提供默认配置,因为在某些环境中可能禁止输出到控制台或文件系统。 另请参阅常见问题解答:为什么 log4j 无法在 J2EE 或 WAR 应用程序中找到我的属性?。
找不到配置文件。 您使用的是 xml 还是属性文件?
另外,使用logback !
好的,所以我通过改变它来让它工作
log4j.rootLogger=DebugAppender
对此
log4j.rootLogger=DEBUG, DebugAppender
显然你必须先指定rootLogger
的日志级别? 如果我浪费了任何人的时间,我深表歉意。
另外,我决定回答我自己的问题,因为这不是类路径问题。
如果在运行使用 log4j 的程序时遇到错误/警告,解决方案是添加类加载器可以看到的 log4j.properties。 通常它在您的 Java 项目的“src”文件夹中:将以下内容添加到文件中
log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
我的解决方法是将“log4j.properties”放入“src”文件夹中。 它在我的包文件夹中不起作用,它必须是源代码的根目录。 将它添加到构建路径,然后将其移动到“参考库”也不起作用。
重复:将 log4j.properties 放在 src 文件夹的根目录下。
我的 log4j.properties 文件具有以下内容,适用于基于 Eclipse 的最新版本的 Spring Tool Suite。
# Configure logging for testing: optionally with log file
#log4j.rootLogger=INFO, stdout
log4j.rootLogger=WARN, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%
这对我有用:
public static void main(String[] args) {
Properties props = new Properties();
props.load(new FileInputStream("src/log4j.properties"));
PropertyConfigurator.configure(props);
没有回答的方法解决了在 NetBeans 中找不到非 Maven jsf web 项目的log4j.properties
文件的问题。 所以答案是:
resources
文件夹。Dlog4j.configuration=resources/log4j.properties
我在 log4j 文件中写了特殊的模式来检查 log4j 是否用于我的文件:
# Root Logger Option
log4j.rootLogger=INFO, console
# Redirect Log Messages To Console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p | %d{yyyy-MM-dd HH:mm:ss} | [%t] %C{2} xxxx (%F:%L) - %m%n
我检查了它,因为如果你使用BasicConfigurator.configure();
在 log4j 中的代码中使用预定义的模式。
对我有用的是创建一个 log4j 属性文件(您可以在网上找到许多示例)并将其放在项目目录中的属性文件夹中(如果不存在,则创建此文件夹)。 右键单击文件夹和Build Path->Use as Source Folder
。
希望能帮助到你!
补充一下@Gevorg,如果你在本地运行Spark也有类似情况,把log4j.properties文件放在主文件夹下的resources文件夹下。
尝试在 main 中执行以下操作:
public static void main(String[] args) {
PropertyConfigurator.configure(args[0]);
//... your code
你需要告诉 log4j 它的配置应该是什么。
只需在 main 方法的开头配置您的 log4j 属性文件路径:例如:PropertyConfigurator.configure("D:\\files\\log4j.properties");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.