log4j日志文件乱码问题的解决方法
2014-03-17 15:17
513 查看
近日在AIX上用log4j打印日志,出现乱码,经过努力解决问题。
症状:在默认语言非中文(或者说默认语言不支持中文的)的Windows、Linux、Unix上,用log4j打印日志,出现乱码,常见的就是一堆问号。
解决方法:
如果是log4j.properties为配置文件,比如:
[c-sharp] view
plaincopy
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.File=all.log
加入一行:
[c-sharp] view
plaincopy
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.Encoding=UTF-8
log4j.appender.A1.File=all.log
如果是log4j.xml为配置文件,比如:
[c-sharp] view
plaincopy
<appender name="A1" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="all.log" />
......
</appender>
加入一行:
[c-sharp] view
plaincopy
<appender name="A1" class="org.apache.log4j.RollingFileAppender">
<param name="Encoding" value="UTF-8" />
<param name="File" value="all.log" />
......
</appender>
原理:
log4j通过QuietWriter写日志,QuietWriter extends FilterWriter,FilterWriter extends Writer,而Writer写入的是字符流,对字符集比较敏感。英文系统一般默认latin-1字符集,只能处理半角,通过encoding指定字符集后,能够正确输出指定字符集的字符流。
字符集指定后,WriterAppender的setEncoding通过org.apache.log4j.config.PropertySetter.setProperties(Object obj, Properties properties, String prefix)设置字符集。
症状:在默认语言非中文(或者说默认语言不支持中文的)的Windows、Linux、Unix上,用log4j打印日志,出现乱码,常见的就是一堆问号。
解决方法:
如果是log4j.properties为配置文件,比如:
[c-sharp] view
plaincopy
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.File=all.log
加入一行:
[c-sharp] view
plaincopy
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.Encoding=UTF-8
log4j.appender.A1.File=all.log
如果是log4j.xml为配置文件,比如:
[c-sharp] view
plaincopy
<appender name="A1" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="all.log" />
......
</appender>
加入一行:
[c-sharp] view
plaincopy
<appender name="A1" class="org.apache.log4j.RollingFileAppender">
<param name="Encoding" value="UTF-8" />
<param name="File" value="all.log" />
......
</appender>
原理:
log4j通过QuietWriter写日志,QuietWriter extends FilterWriter,FilterWriter extends Writer,而Writer写入的是字符流,对字符集比较敏感。英文系统一般默认latin-1字符集,只能处理半角,通过encoding指定字符集后,能够正确输出指定字符集的字符流。
字符集指定后,WriterAppender的setEncoding通过org.apache.log4j.config.PropertySetter.setProperties(Object obj, Properties properties, String prefix)设置字符集。
相关文章推荐
- log4j日志文件乱码问题的解决方法
- log4j日志文件乱码问题的解决方法
- log4j日志文件乱码问题的解决方法
- log4j日志文件乱码问题的解决方法
- log4j日志文件乱码问题的解决方法
- Log4j 输出的日志中时间比系统时间少了8小时的解决方法,log4j日志文件重复输出
- php使用fputcsv()函数csv文件读写数据的方法(解决中文乱码问题)
- thinkphp使用http::download下载word或者ppt文件乱码问题的解决方法
- ubuntu解压zip文件乱码问题解决方法
- spring boot使用i18n时properties文件中文乱码问题的解决方法
- python logging 日志轮转文件不删除问题的解决方法
- log4j日志时间与系统时间不一致问题解决方法
- Java:InputStream读取文本文件内容出现乱码问题的解决方法
- IO 流读取文件时候出现乱码 文件编码格式问题 怎么转换解决方法
- CodeMan的Linux问题解决集锦:Linux打开阅读chm文件和解决chm中文乱码的方法
- Log4j创建日志服务器 解决集群日志问题及话单文件
- Resin3.1.6中rar文件下载乱码的问题解决方法
- Log4j日志文件输出为相对路径的解决方法
- 【转】python csv 格式文件 中文乱码问题解决方法