我一直试图让log4j-2.0-b9与jar一起工作但却无法使用。我希望.jar之外的属性文件与.jar文件位于同一目录中,但log4j似乎没有提取它并默认在控制台上打印。我的配置文件如下所示:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} %5p %c{1} - %m%n"/>
</layout>
</appender>
<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="append" value="false"/>
<param name="file" value="C:\Users\abhishek\workspace\log4jtest\log.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="fileAppender"/>
</root>
</log4j:configuration>
我的JAVA代码如下:
package com.test;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Test {
private static Logger logger = LogManager.getLogger(Test.class);
public static void main(String[] args) {
logger.error("Test error");
}
}
感谢。
答案 0 :(得分:1)
log4j配置文件需要位于要查看的类路径中。如果你是从jar运行java,那那个jar文件就是你的类路径,所以log4j配置必须在那个jar中。
如果您不想这样做,也许您可以将“Class-Path”标头添加到jar文件的清单中。我自己没有尝试过,但它描述了here。
答案 1 :(得分:1)
问题中的配置使用log4j-1.2格式。
Log4j-2.0使用不同的XML格式。配置文件也应该调用log4j2.xml
而不是log4j.xml
。最简单的配置方法是将log4j2.xml
文件放在类路径中。
在线文档有许多示例配置:例如File Appender和Console。
请注意,类路径中需要两者 log4j-api-2.0和log4j-core-2.0 jar文件。
答案 2 :(得分:1)
我写了一篇关于迁移的帖子,它可能有帮助
http://mariemjabloun.blogspot.com/2014/09/log4j-2-tutorial-solve-error.html