Log4j打成jar包后不起作用

来源:互联网 发布:淘宝买家可以贷款吗 编辑:程序博客网 时间:2024/05/16 09:56

在Myeclipse可以起作用打印log日志,打成jar包后log4j不起作用,翻阅了很多说明,最后得出结论还是路径问题!!

改成绝对路径:PropertyConfigurator.configure("C:/emailcapture/log4j.properties");
测试可用...................


接着遇到新问题,log4j日志输出是乱码.....

解决方法:添加编码集

log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.Encoding=UTF-8
log4j.appender.D.File = C:/emailcapture/logs/log.log
log4j.appender.D.Threshold = INFO
log4j.appender.D.Append = true
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern=[%d{HH:mm:ss}][%c][%L][%m]%n

原理:

log4j通过QuietWriter写日志,QuietWriter extends FilterWriter,FilterWriter extends Writer,而Writer写入的是字符流,对字符集比较敏感。英文系统一般默认latin-1字符集,只能处理半角,通过encoding指定字符集后,能够正确输出指定字符集的字符流。

字符集指定后,WriterAppender的setEncoding通过org.apache.log4j.config.PropertySetter.setProperties(Object obj, Properties properties, String prefix)设置字符集。


原创粉丝点击