我尝试了以下内容:
File logFile = new File("performance.log");
FileAppender appender = new FileAppender(layout, logFile.getName() , false);
appender.setEncoding("UTF-8");
logger.addAppender(appender);
logger.setLevel((Level) Level.DEBUG);
logger.setAdditivity(false);
....
logger.info("Finished in " + (System.nanoTime() - start) / 1000 + " \u03BCs");
但它没有正确打印希腊mu char。如果我按log4j.properties配置我的记录器
,它可以工作答案 0 :(得分:2)
我遇到了同样的问题而且偶然发现了这个问题。从源代码来看,FileAppender
在设置编码时似乎没有任何作用。调用构造函数后,已创建具有默认编码的OutputStreamWriter
。它仅在void setFile(String fileName, boolean append, boolean bufferedIO, int bufferSize)
方法内创建,使用起来非常不方便,但它从void activateOptions()
调用。无论如何,这可能是它的意思!
所以,如果有人仍然遇到麻烦,只需添加这一个电话就可以了:
File logFile = new File("performance.log");
FileAppender appender = new FileAppender(layout, logFile.getName() , false);
appender.setEncoding("UTF-8");
appender.activateOptions();
答案 1 :(得分:0)
如果您使用的是XML配置文件:
<appender name="customLogFile" class="org.apache.log4j.RollingFileAppender">
<param name="encoding" value="Cp1252" />
...
</appender>