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

log4j日志文件中文乱码处理方法

log4j 控制台和文件输出乱码问题解决

写在前面,第三篇文章中将原因解释的最清楚,为什么设置为UTF-8或者GBK就生效了,原因是类文件的编码和输入日志的编码必须一致,否则就会出现乱码。


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

近日在AIX上用log4j打印日志,出现乱码,经过努力解决问题。

症状:在默认语言非中文(或者说默认语言不支持中文的)的Windows、Linux、Unix上,用log4j打印日志,出现乱码,常见的就是一堆问号。

解决方法:

如果是log4j.properties为配置文件,比如:

log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.File=all.log

加入一行:

log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.Encoding=UTF-8
log4j.appender.A1.File=all.log  

如果是log4j.xml为配置文件,比如:

<appender name="A1" class="org.apache.log4j.RollingFileAppender">  <param name="File" value="all.log" />  ......
</appender>  

加入一行:

<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输出到文件乱码,控制台正常。显然是编码问题导致。Google一搜,几乎一水的说:

项目中log4j在英文版linux下输出中文日志为乱码。由于log4j配置文件中没有设置编码格式(encoding),所以log4j就使用系统默认编码。导致乱码。解决方法是设置编码格式UTF-8,方法为:

log4j.appender.syslog.encoding=UTF-8

这显然是转的,因为全网几乎一样。先不说这是properties配置的,还不是xml的。如果要xml的,配置如下:

<appender name="A1" class="org.apache.log4j.RollingFileAppender"> <param name="Encoding" value="UTF-8" /> <param name="File" value="all.log" /> ...... </appender> 

但是,我是已经设置成UTF-8,而乱码了。所以,上述答案是不严谨的。

先说说笔者的情况吧,其实笔者的问题很简单,两套log4j appender配置,一个输出的文件,一个控制台,文件的配置了utf-8编码,控制台没配置。现象,控制台正常,文件乱码。

把文件的改成gbk,不乱了。控制台改成gbk,乱码。控制台改成utf-8,正常。到这里你可能糊涂了。怎么这么乱?

其实道理很简单,乱码,自然是编码不匹配。什么匹配?log4jutf-8输入,你文件是不是utf-8编码的呢?检查一下,果然不是,改成utf-8编码,解决。

你可能要问了,那控制台的匹配在哪里?Eclipse控制台也有是编码的,而且,不仅仅是有,你还可以为每个执行的程序,设置独立的编码。

自然,这里的编码匹配了,也就不会乱码了。

log4j日志文件乱码问题的解决方法相关推荐

  1. java去掉mongodb日志_MongoDB日志文件过大的解决方法 清理

    MongoDB日志文件过大的解决方法 2016年05月09日 14:43:11 jjwen 阅读数 1261 MongoDB的日志文件在设置 logappend=true 的情况下,会不断向同一日志文 ...

  2. Java读带有BOM的UTF-8文件乱码原因及解决方法(转)

    转载:http://www.linuxidc.com/Linux/2012-12/76707.htm 最近在处理文件时发现了同样类型的文件使用的编码可能是不同的.所以想将文件的格式统一一下(因为UTF ...

  3. Java读取UTF-8格式txt文件第一行出现乱码及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法(转载)...

    原文地址:http://blog.csdn.net/jackpk/article/details/5702964/ Java读取UTF-8的txt文件第一行出现乱码"?"及解决 t ...

  4. Java读带有BOM的UTF-8文件乱码原因及解决方法

    Java读带有BOM的UTF-8文件乱码原因及解决方法 Java读带有BOM的UTF-8文件乱码原因及解决方法 - daimojingdeyu - ITeye技术网站 Java读带有BOM的UTF-8 ...

  5. R读取excel文件乱码 read.xlsx() 解决方法

    1. 参考[R语言]R读取含中文excel文件,read.xlsx乱码问题  该文章总结得很好,可以直接跳到最后看博主的总结. 2. 如果依旧是乱码那么用read.xlsx2()去读取excel文件, ...

  6. MongoDB 日志文件过大的解决方法

    方法一: mongo的命令行输入以下命令使mongo关闭当前日志文件,重启一个新的日志文件,不需要停止mongodb服务 use admin //切换到admin数据库 db.runCommand({ ...

  7. linux加载u盘乱码怎么转换,Linux系统下加载U盘设备时文件乱码的有效解决方法

    很少情况会在Linux系统下使用U盘,但是最近有朋友在Linux系统下加载U盘设备的时候发现U盘内的文件出现了乱码现象,这该怎么办呢?很多朋友对Linux系统又不太熟悉,不知道该怎么操作,没关系,让小 ...

  8. log4j日志文件的使用及log4j日志文件失效原因分析

    log4j的使用步骤 1.导入log4j-*.jar,例:log4j-1.2.17-jar; <dependency><groupId>log4j</groupId> ...

  9. linux日志文件存放目录,Log4j 日志文件Linux/Mac/Windows通用存放位置设置方法

    log4j1/log4j2中category的配置以及log的输出位置(windows和linux通用的log输出位置) 一.场景和需求 假设我现在有3个独立的用project(暂时用maven关联起 ...

最新文章

  1. TVM性能评估分析(四)
  2. 深度信念网络研究现状与展望
  3. HDU 5785 interesting
  4. git 查看修改明细_git 查看指定文件的修改历史记录
  5. boost::filesystem模块Microsoft TCHAR 的使用示例的测试程序
  6. SQL基础【二、SQL语法】
  7. [图解tensorflow源码] [原创] Tensorflow 图解分析 (Session, Graph, Kernels, Devices)
  8. [导入]商业智能2.0?(BI 2.0 from Timo Elliott)
  9. Ubuntu18.04之apt/dpkg用法
  10. 面向对象编程——2.细致了解
  11. Windows 8正式版亮点与新功能抢先看
  12. minio  nginx 配置
  13. 使用.NET和Jquery打造简单的便签纸
  14. 代码美化网站,让你的代码别具一格
  15. VsCode+PHP开发 推荐插件
  16. Bluetooth tethering不能用问题
  17. 云和恩墨入选《数据安全产品与服务图谱1.0》
  18. 安卓 11 非网络以太网切换动态和静态IP无法连接问题
  19. 第44章 MPU6050传感器—姿态检测—零死角玩转STM32-F429系列
  20. 腿抖在饮食上需要注意什么?

热门文章

  1. 基于RT-Thread+RA6M4的远程开机助手
  2. 手机跟电脑居然是同一IP地址,你知道是怎么上网的吗?
  3. 博通Broadcom系列网卡连接受限问题
  4. 博通Broadcom SDK源码学习与开发4——ECOS系统数据流
  5. arrays.sort()
  6. 推荐:程序员特有的9个搞笑习惯
  7. 在iframe中写html,使用jQuery在iframe中获取HTML
  8. Linux嵌入式开发——C编程
  9. Mac Big Sur提示xxx文件已损坏
  10. 关于SparkHashJoin等值和不等值连接