2

我尝试了以下方法:

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 配置我的记录器,它会起作用

4

2 回答 2

3

我有同样的问题,只是偶然发现了这个问题。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();
于 2014-01-29T15:36:56.100 回答
0

如果您使用的是 XML 配置文件:

<appender name="customLogFile" class="org.apache.log4j.RollingFileAppender">
    <param name="encoding" value="Cp1252" />
    ...
</appender>
于 2016-02-11T22:22:28.437 回答