log4j:WARN没有为logger找到appender(运行jar文件,而不是web app)

时间:2012-07-03 20:37:01

标签: java log4j

首先 - 是的,我已经阅读了多个问题&关于这个主题的答案,并没有得到那些帮助我的任何解决方案。我没有运行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

我已经在log/mydir创建了mydir/code目录,以防万一。

有什么想法吗?

7 个答案:

答案 0 :(得分:58)

指定log4j配置有许多可能的选项。一个是将文件命名为“log4j.properties”并且在您的类路径中。另一种方法是将它命名为你想要的,并在启动Java时向命令行添加一个System属性,如下所示:

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

所有这些都在此处列出http://logging.apache.org/log4j/1.2/manual.html#defaultInit

答案 1 :(得分:43)

解决方案

  1. 下载 log4j.jar 文件
  2. 添加 log4j.jar 文件以构建路径
  3. 通过以下方式呼叫记录器:

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

    /workspace/projectdirectory/bin/
    
  5. 示例log4j.properties文件

    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 
    

答案 2 :(得分:9)

我已将我的log4j.properties移动到资源文件夹中,它对我来说很好用!

答案 3 :(得分:3)

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

答案 4 :(得分:2)

您可以在 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; %m\n

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

此致

答案 5 :(得分:1)

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

现在在eclipse中单击项目----&gt; clean ----&gt;确定

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

我花时间想出这个。 有时直接点击清洁不起作用

答案 6 :(得分:0)

将具有log属性文件的文件夹放入java build path source中。您可以通过右键单击项目来添加它----&gt;建立路径-----&gt;配置构建路径------&gt;添加t