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

Ina*_*Ina 53 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.
Run Code Online (Sandbox Code Playgroud)

我的log4j配置文件(我把它放在mydir和mydir/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
Run Code Online (Sandbox Code Playgroud)

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

有任何想法吗?

Joh*_*tts 59

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

-Dlog4j.configuration=file:///path/to/your/log4j.properties
Run Code Online (Sandbox Code Playgroud)

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

  • 我总是忘记"file:"前缀!在Windows中:" - Dlog4j.configuration = file:C:\ ApplicationTools\..." (4认同)
  • 对于那些正在寻找类似问题解决方案的人:传递-Dlog4j.debug可以真正帮助进行投资 (4认同)

mel*_*ngs 43

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

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

    /workspace/projectdirectory/bin/
    
    Run Code Online (Sandbox Code Playgroud)

示例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 
Run Code Online (Sandbox Code Playgroud)


Glo*_*pur 10

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