`

log4j日志文件乱码问题的解决方法

 
阅读更多
原文地址:http://blog.csdn.net/inkfish/article/details/4761357




近日在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)设置字符集。
分享到:
评论

相关推荐

    log4j日志文件乱码解决方法

    要解决Log4j日志文件乱码的问题,关键在于指定正确的字符编码。在配置文件中添加指定编码的参数可以确保日志被正确地以特定的字符集(如UTF-8)写入。以下是两种不同配置文件格式的解决方案: 1. **log4j....

    log4j乱码问题解决办法

    - **修改全局编码设置**:有些情况下,修改`log4j.properties`文件中的编码设置仍然无法解决问题。这时,可以考虑修改JVM启动参数,添加`-Dfile.encoding=UTF-8`等类似的命令来设置全局的文件编码。 - **检查操作...

    idea日志乱码和tomcat日志乱码问题的解决方法

    log4j配置文件中需要正确设置编码、输出级别、日志文件路径等信息,以确保日志记录正确。 知识点4:解决乱码问题的常见方法 解决乱码问题的常见方法是: 1. 检查日志配置文件,确保编码设置正确。 2. 检查IDEA中...

    log4delphi 0.8 for XE2 (解决中文乱码问题)

    总结来说,`log4delphi 0.8 for XE2` 是一款为 Delphi XE2 用户量身打造的日志框架,通过解决中文乱码问题,提高了在处理多语言环境下的稳定性,同时提供了强大的日志记录和管理能力,是 Delphi 开发者的得力助手。

    log4j中文手册(中文版)

    - **日志乱码的解决**:介绍了在不同环境下遇到日志乱码问题时的解决方案。 综上所述,`log4j`是一款强大且灵活的日志记录工具,通过上述知识点的学习,我们不仅可以快速掌握其基础使用方法,还能深入理解其内部...

    Log4j手册

    ### Log4j手册详解 ...解决这一问题的方法是在配置文件中明确指定日志文件的编码格式,或者在应用程序中统一使用UTF-8编码。确保从输入到输出的所有环节都使用相同的字符编码,可以有效避免乱码问题的发生。

    mybatis乱码的解决方法

    5. **日志配置**:根据日志输出的需求,如使用Log4j或SLF4J,配置相应的日志编码参数,确保日志打印的正确性。 6. **i18n配置**:对于国际化文件,如properties或xml格式,确保文件本身和读取方式都使用了正确的...

    tomcat日志乱码处理方法总结

    - **日志框架选择**:除了内置的Apache JULI外,还可以考虑使用Log4j、Logback等第三方日志框架,这些框架提供了更灵活的配置选项,有助于解决乱码问题。 通过以上步骤,大部分情况下的Tomcat日志乱码问题都能得到...

    log4j配置详解总结资料

    `log4j乱码配置.htm`可能涉及编码问题。在日志中出现乱码时,通常需要检查日志输出文件的编码设置,确保与程序的编码一致,如UTF-8。 **多文件配置** `log4j多文件配置.htm`介绍了如何将不同类型的日志分别输出到...

    彻底解决 Tomcat 5 下文字乱码问题 - JSP日志 - ※一路风尘※

    - 如果使用的是自定义日志框架,如Log4j,需在配置文件中指定编码,例如`log4j.appender.stdout.Encoding=UTF-8`。 4. **文件上传与下载**: - 文件上传时,确保表单使用`enctype="multipart/form-data"`,并在...

    Java关于中文乱码问题的多种解决方法

    当Java程序输出日志时,确保日志框架(如Log4j)的配置文件中,日志文件的编码设置正确,如`&lt;param name="Encoding" value="UTF-8"/&gt;`。 10. 编译器与乱码: 使用`javac`编译Java源文件时,可以添加`-encoding`...

    Log4j中文手册

    - **日志乱码的解决**:解释了如何解决日志输出时可能出现的乱码问题。 综上所述,Log4j为Java应用程序提供了高度可定制的日志记录能力,通过合理利用其提供的各种特性,可以极大地提高应用程序的可维护性和可诊断...

    WEBSPHERE乱码问题的解决和处理

    根据提供的信息来看,用户在部署了一个WebSphere集群后,发现通过WebService接口传递的数据中,所有的中文字符都显示为问号,同时在日志文件中也出现了乱码的情况。这一现象表明系统在处理中文字符时存在问题。 **...

    ibatis乱码解决方法(ibatis独立)

    - 日志输出时,确保日志框架(如Log4j、SLF4J等)的配置文件中指定了正确的字符集,避免在打印SQL语句时出现乱码。 7. **文件读写**: - 如果是从文件中读取或写入数据,确保文件的读写操作使用了与数据库相同的...

    EL中文显示乱码的解决办法

    - 日志框架如Log4j、Logback的日志配置文件也要指定UTF-8编码,确保日志中的中文字符能正常显示。 通过以上步骤,大部分EL中文显示乱码的问题都能得到解决。如果问题依然存在,可能需要进一步排查其他潜在因素,如...

    解决Tomcat在控制台console中显示乱码的问题

    - 除了Java自带的`java.util.logging`,还可以使用如Log4j、Logback等更强大的日志框架。这些框架通常提供了更丰富的配置选项,包括指定日志输出的字符编码。 5. **分析文件内容**: 提供的压缩包中包含了一个名...

    java乱码综合解决方法(不区分get和post)

    5. **日志输出**:确保日志框架如Log4j或Logback配置了正确的字符集。 6. **数据库操作**:在连接数据库时,确认数据库的字符集与Java应用使用的编码一致,避免在存储和检索数据时出现乱码。 在给出的压缩包文件中...

    windows、windows server系统下tomcat 乱码解决方案(包含注册成系统服务)

    #### 四、解决控制台日志乱码问题 1. **修改logging.properties文件** - 在Tomcat安装目录下的`conf`文件夹中找到`logging.properties`文件,使用记事本或其他文本编辑器打开。 - 添加或修改以下配置项: ```...

    SupplyunittableUtil.java(中文乱码解决之道)

    - 对于日志输出,确保日志框架如Log4j的配置文件中设置了正确的字符集。 - 使用`String.getBytes()`和`new String(byte[], charset)`时,明确指定charset参数。 在`SupplyunittableUtil.java`类中,可能有静态方法...

Global site tag (gtag.js) - Google Analytics