Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
log4j如何在java代码中设置FileAppender编码?_Java_Encoding_Utf 8_Log4j - Fatal编程技术网

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()