log4j如何在java代码中设置FileAppender编码?
我尝试了以下方法:log4j如何在java代码中设置FileAppender编码?,java,encoding,utf-8,log4j,Java,Encoding,Utf 8,Log4j,我尝试了以下方法: 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.setAdditivit
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配置我的记录器,它就会工作。属性我也遇到了同样的问题,只是偶然发现了这个问题。从源代码来看,当您设置编码时,
FileAppender
似乎什么都不做。调用构造函数后,已创建带有默认编码的OutputStreamWriter
。它仅从void setFile(字符串文件名、布尔追加、布尔缓冲区dio、int bufferSize)
方法中创建,使用起来非常不方便,但它是从void activateOptions()
调用的。无论如何,这可能就是它的目的
因此,如果有人对此仍有问题,只需添加一个电话,您就可以开始了:
File logFile = new File("performance.log");
FileAppender appender = new FileAppender(layout, logFile.getName() , false);
appender.setEncoding("UTF-8");
appender.activateOptions();
如果您使用的是XML配置文件:
...
感谢您appender.activateOptions()代码>