我尝试了以下方法:
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");
但是它不能正确打印希腊亩字符。如果我根据log4j.properties配置记录器,它将起作用
最佳答案
我有同样的问题,只是偶然发现了这个问题。从源代码看来,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();