彻底解决tomcat6加入log4j后在linux平台下乱码的问题
来源:互联网 发布:如何参加淘宝客 编辑:程序博客网 时间:2024/04/30 13:37
最近的开发过程中发生一件非常让人苦恼的事件: 在windows下的tomcat8+jdk1.8调试没问题, tomcat6+jdk1.6测试环境也没问题, 但分发到生产环境的linux(tomcat6+jdk1.6) , 使用不久用户反映输入的中文全部变乱码 !
可幸事先有做备份, 于是赶紧恢复备份,接下来写了一个小小的测试 test.jsp丢到linux环境下:
<%@page import="org.apache.commons.logging.LogFactory"%><%@page import="org.apache.commons.logging.Log"%><% /* -------------------------------------------------------------------- Program:SAR920L1 - Created:22/Oct/2008 by csmiswfl Modify: 26/DEC/2008 by dgmishxw Modify:05/Jan/2009 by csmiswfl Modify:14/Jan/2010 by dgmislfb * -------------------------------------------------------------------- */%><%@ include file="sardef.jsp" %><%@ include file="common/alco_lib.jsp" %><%@ include file="common/alco_header.jsp" %><script type="text/javascript" src="js/jq.js"></script><%//* // Database Access Connection w_conn = null; Statement w_stmt = null; ResultSet w_rs = null; String lvName=""; String pvStaffName=X01getParameter(c_para, "staffname"); if (pvStaffName==null){ pvStaffName=""; } Log log = LogFactory.getLog("test"); log.info("input value:"+pvStaffName); try { w_conn = X60getConnection(); w_stmt = w_conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); if (!pvStaffName.equals("")){ X62executeSQL(w_stmt,"update test set staffname='"+pvStaffName+"'"); } w_rs=X61executeQuery(w_stmt, "select * from test limit 1"); w_rs.next(); lvName=w_rs.getString("staffname"); w_rs.close(); }finally { X63closeConn(w_conn, w_stmt, w_rs); } //%><div> submit value:<%=pvStaffName %><br/> database value: <%=lvName %></div><form action="./test.jsp" method="post"><label>Update Name:</label><input name="staffname" value="<%=lvName%>"/><input type="submit" /></form>
在新的web app下, 在test.jsp页面输入中文, input value是乱码的,各种排除后最终发现原来是log4j惹的祸!后来指定了log4j的日志输出encoding还是不行,无意中,将日志级别改为INFO再试,OK了!刚开始以为手误,再改为DEBUG,乱码!改为INFO正常!!! 真是无比奇葩! 但在linux下的tomcat8+jdk1.8是完全没问题的, 这是log4j的bug还是tomcat6的bug ?!
贴出这份log4j的配置,兼容tomcat6的中文/log输出也是中文,项目的编码是utf-8。
### logger的配置 ####配置根loggerlog4j.rootLogger=INFO,stdout,RollingAppender#配置子logger:org.lavasoft(在org.lavasoft包中类的日志在没有指定子logger名的情况下使用这个logger)#log4j.logger.org.lavasoft=ERROR,file#配置子logger:org.lavasoft.test(在org.lavasoft.test包中类的日志在没有指定子logger名的情况下使用这个logger)#log4j.logger.org.lavasoft.test=ERROR,file1,stdoutlog4j.appender.syslog.encoding=UTF-8log4j.appender.logfile.encoding=UTF-8### direct log messages to stdout ### (标准的终端输出)#控制台输出log4j.appender.stdout=org.apache.log4j.ConsoleAppender#自定义输出布局log4j.appender.stdout.layout=org.apache.log4j.PatternLayout#输出的格式log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### direct messages to file ttt.log ### (输入到文件ttt.log的配置)#输出到滚动文件log4j.appender.RollingAppender=org.apache.log4j.DailyRollingFileAppender#输出文件最大为10Mlog4j.appender.RollingAppender.MaxFileSize=2MBlog4j.appender.RollingAppender.Threshold=INFO#输出文件最大序号为10log4j.appender.RollingAppender.MaxBackupIndex=10#输出文件路径log4j.appender.RollingAppender.File=/live/logs/dgsar#log4j.appender.Appender2.DatePattern=’_’yyyy-MM-dd’.log’log4j.appender.RollingAppender.DatePattern='.'yyyy-MM-dd#自定义输出布局log4j.appender.RollingAppender.layout=org.apache.log4j.PatternLayout#输出格式log4j.appender.RollingAppender.layout.ConversionPattern=%d %-5p [%t] (%13F:%L) %3x - %m%n
project 的log4j版本:log4j-1.2.17
0 0
- 彻底解决tomcat6加入log4j后在linux平台下乱码的问题
- Linux下Tomcat6的乱码问题
- 在Linux平台下的JFreeChart中文乱码的问题
- Windows 平台下编辑文本复制到Linux下后,中文字符出现乱码的问题
- Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)
- Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)
- Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)
- Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)
- Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)
- Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)
- Linux下MySQL 5.5/5.6的修改字符集编码为UTF8(彻底解决中文乱码问题)
- Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)
- 解决 log4j 在 linux 上出现乱码的问题
- 解决 log4j 在 linux 上出现乱码的问题
- 写了一个查询数据库的程序,不熟的Tomcat6。查询条件为英文时运行正常,为中文时出现乱码。后在tomcap的server.xml中加入useBodyEncodingForURI="true解决了问题
- Linux基础 —— Ubuntu 下 Vim 在终端下退出后的乱码问题
- windows下压缩的文件在linux下解压后中文乱码问题
- log4j在linux输出中文乱码问题
- 使用Oracle10g数据库,date类型放到数据库时分秒不见了,只有年月日
- javascript 动态修改css样式方法
- poj 1942 Counterfeit Dollar
- 静态类和非静态类的区别
- 株洲新程IT 教育 李赞红老师 第四章 双缓存技术
- 彻底解决tomcat6加入log4j后在linux平台下乱码的问题
- Python:mechanize模拟浏览器行为
- 编译时:virtual memory exhausted: Cannot allocate memory
- popwindow分析以及使用注意事项(二)
- mysql - 日期函数
- Dojo1.11官方教程文档翻译(1.1)开启Dojo之旅
- MySQL陷阱
- Android广告轮播图实现
- git -- 链接远程仓库