Log4j⽇志⽂件乱码问题的解决⽅法
症状:在默认语⾔⾮中⽂(或者说默认语⾔不⽀持中⽂的)的Windows、Linux、Unix上,⽤log4j打印⽇志,出现乱码,常见的就是⼀堆问号。
解决⽅法:
如果是log4j.properties为配置⽂件,⽐如:
加⼊⼀⾏:
如果是l为配置⽂件,⽐如:
加⼊⼀⾏:
原理:
log4j2自定义日志文件名log4j通过QuietWriter写⽇志,QuietWriter extends FilterWriter,FilterWriter extends Writer,⽽Writer写⼊的是字符流,对字符集⽐较敏感。英⽂系统⼀般默认latin-1字符集,只能处理半⾓,通过encoding指定字符集后,能够正确输出指定字符集的字符流。
字符集指定后,WriterAppender的setEncoding通过org.fig.PropertySetter.setProperties(Object obj, Properties properties, String prefix)设置字符集。