log4j:WARN 找不到记录器的追加器(运行 jar 文件,而不是 Web 应用程序)



首先 - 是的,我已经阅读了有关此主题的多个问题和答案,并且无法在其中获得任何解决方案来帮助我。我没有运行Tomcat或JBoss,也没有要更改web.xml文件。我正在使用Java 6.0和log4j-1.2.8.jar

我正在使用 IDEA IntelliJ 创建一个可运行的 jar 文件,其中包含单独打包并通过清单链接的 jar 库。我在 Linux 服务器上运行我的代码,因此:

me@server:/mydir> java -jar code/myjar.jar
log4j:WARN No appenders could be found for logger (FactoredEventsForTrna).
log4j:WARN Please initialize the log4j system properly.

我的 log4j 配置文件(我已将其放在 mydirmydir/code 中,以防万一)是:

## Logger configure file for myproject
log.dir=log/
datestamp=yyyy-MM-dd/HH:mm:ss.SSS
log4j.rootLogger=TRACE, file, proappender, console
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.maxFileSize=1GB
log4j.appender.file.maxBackupIndex=5
log4j.appender.file.File=log/mydebug.log
log4j.appender.file.threshold=TRACE
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: %c{2} - %m%n
log4j.appender.proappender=org.apache.log4j.RollingFileAppender
log4j.appender.proappender.maxFileSize=5GB
log4j.appender.proappender.Threshold=INFO
log4j.appender.proappender.File=log/myinfo.log
log4j.appender.proappender.layout=org.apache.log4j.PatternLayout
log4j.appender.proappender.layout.ConversionPattern=%d{${datestamp}} %5p: %c{2} - %m%n
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p: %c{2} - %m%n

我已经在 mydirmydir/code 中创建了 log/ 目录,再次以防万一。

有什么想法吗?

有许多可能的选项可用于指定 log4j 配置。一种是将文件精确命名为"log4j.properties"并位于类路径中。另一种方法是随心所欲地命名它,并在启动 Java 时将 System 属性添加到命令行,如下所示:

-Dlog4j.configuration=file:///path/to/your/log4j.properties

所有这些都在这里概述 http://logging.apache.org/log4j/1.2/manual.html#defaultInit

解决方案

  1. 下载log4j.jar文件
  2. log4j.jar文件添加到构建路径
  3. 呼叫记录器:

    private static org.apache.log4j.Logger log 
        = Logger.getLogger(<class-where-this-is-used>.class);
    
  4. 如果 log4j 属性不存在,请创建新文件 log4j.properties 文件 bin 目录中的新文件:

    /workspace/projectdirectory/bin/
    

示例日志4j.属性文件

log4j.rootLogger=debug, 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=%t %-5p %c{2} - %m%n 

我已经将我的 log4j.properties 移到了资源文件夹中,它对我来说工作正常!

伙计,我在我的一个日食项目中遇到了这个问题,令人惊讶的是,问题是我的 .project 文件中罐子的顺序。 信不信由你!

您可以在 solr/examples/resources 中找到 de log4j.properties

如果你没有找到该文件,我把它放在这里:

#  Logging level
solr.log=logs/
log4j.rootLogger=INFO, file, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x u2013 %m%n
#- size rotation with log cleanup.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=4MB
log4j.appender.file.MaxBackupIndex=9
#- File to log to and log format
log4j.appender.file.File=${solr.log}/solr.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %mn
log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.hadoop=WARN
# set to INFO to enable infostream log messages
log4j.logger.org.apache.solr.update.LoggingInfoStream=OFF

问候

将 log4j.properties 文件移动到 src 文件夹中。打开 Windows 资源管理器,浏览到项目所在的目录。浏览到bin 目录并删除其中包含的所有文件夹

现在在日食中单击项目---->清理---->确定

这将强制它再次构建项目,将从bin目录中删除的所有内容都将重新创建。

我花了一段时间才弄清楚这一点。有时直接单击"清除"不起作用

将包含 log 属性文件的文件夹放入 Java 构建路径源中。您可以通过右键单击项目---->构建路径来添加它----->配置构建路径------>添加

相关内容

最新更新