log4j日志文件乱码问题的解决方法
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,正常。到这里你可能糊涂了。怎么这么乱?
其实道理很简单,乱码,自然是编码不匹配。什么匹配?log4j用utf-8输入,你文件是不是utf-8编码的呢?检查一下,果然不是,改成utf-8编码,解决。
你可能要问了,那控制台的匹配在哪里?Eclipse控制台也有是编码的,而且,不仅仅是有,你还可以为每个执行的程序,设置独立的编码。
自然,这里的编码匹配了,也就不会乱码了。
log4j日志文件乱码问题的解决方法相关推荐
- java去掉mongodb日志_MongoDB日志文件过大的解决方法 清理
MongoDB日志文件过大的解决方法 2016年05月09日 14:43:11 jjwen 阅读数 1261 MongoDB的日志文件在设置 logappend=true 的情况下,会不断向同一日志文 ...
- Java读带有BOM的UTF-8文件乱码原因及解决方法(转)
转载:http://www.linuxidc.com/Linux/2012-12/76707.htm 最近在处理文件时发现了同样类型的文件使用的编码可能是不同的.所以想将文件的格式统一一下(因为UTF ...
- Java读取UTF-8格式txt文件第一行出现乱码及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法(转载)...
原文地址:http://blog.csdn.net/jackpk/article/details/5702964/ Java读取UTF-8的txt文件第一行出现乱码"?"及解决 t ...
- Java读带有BOM的UTF-8文件乱码原因及解决方法
Java读带有BOM的UTF-8文件乱码原因及解决方法 Java读带有BOM的UTF-8文件乱码原因及解决方法 - daimojingdeyu - ITeye技术网站 Java读带有BOM的UTF-8 ...
- R读取excel文件乱码 read.xlsx() 解决方法
1. 参考[R语言]R读取含中文excel文件,read.xlsx乱码问题 该文章总结得很好,可以直接跳到最后看博主的总结. 2. 如果依旧是乱码那么用read.xlsx2()去读取excel文件, ...
- MongoDB 日志文件过大的解决方法
方法一: mongo的命令行输入以下命令使mongo关闭当前日志文件,重启一个新的日志文件,不需要停止mongodb服务 use admin //切换到admin数据库 db.runCommand({ ...
- linux加载u盘乱码怎么转换,Linux系统下加载U盘设备时文件乱码的有效解决方法
很少情况会在Linux系统下使用U盘,但是最近有朋友在Linux系统下加载U盘设备的时候发现U盘内的文件出现了乱码现象,这该怎么办呢?很多朋友对Linux系统又不太熟悉,不知道该怎么操作,没关系,让小 ...
- log4j日志文件的使用及log4j日志文件失效原因分析
log4j的使用步骤 1.导入log4j-*.jar,例:log4j-1.2.17-jar; <dependency><groupId>log4j</groupId> ...
- linux日志文件存放目录,Log4j 日志文件Linux/Mac/Windows通用存放位置设置方法
log4j1/log4j2中category的配置以及log的输出位置(windows和linux通用的log输出位置) 一.场景和需求 假设我现在有3个独立的用project(暂时用maven关联起 ...
最新文章
- TVM性能评估分析(四)
- 深度信念网络研究现状与展望
- HDU 5785 interesting
- git 查看修改明细_git 查看指定文件的修改历史记录
- boost::filesystem模块Microsoft TCHAR 的使用示例的测试程序
- SQL基础【二、SQL语法】
- [图解tensorflow源码] [原创] Tensorflow 图解分析 (Session, Graph, Kernels, Devices)
- [导入]商业智能2.0?(BI 2.0 from Timo Elliott)
- Ubuntu18.04之apt/dpkg用法
- 面向对象编程——2.细致了解
- Windows 8正式版亮点与新功能抢先看
- minio nginx 配置
- 使用.NET和Jquery打造简单的便签纸
- 代码美化网站,让你的代码别具一格
- VsCode+PHP开发 推荐插件
- Bluetooth tethering不能用问题
- 云和恩墨入选《数据安全产品与服务图谱1.0》
- 安卓 11 非网络以太网切换动态和静态IP无法连接问题
- 第44章 	MPU6050传感器—姿态检测—零死角玩转STM32-F429系列
- 腿抖在饮食上需要注意什么?