解决Logback生成的日志文件不能显示中文的问题

新的项目中使用logback+slf4j替换了原来的log4j+slf4j,并且是作为一个Web Application在tomcat中运行,发现生成的日志文件中所有中文都是乱码。

首先想到的解决方法就是logback中设置生成的日志文件的编码。在网上找到了两种设置,但是都不起作用

1. 设置Encoding。在appender中增加一行<Encoding>UTF-8</Encoding>,但是在启动中报错,说是不能识别Encoding元素。有人说Encoding在0.9.22以后版本中已经不能用了。于是就找到了第二种方法。

2. 在Encoder中设置charset。logback实现了集中不同的Encoder,其中LayoutWrappingEncoder中有一个charset属性,并且有人提到可以通过charset设置日志文件编码。于是就将encoder属性修改为:

<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} : %p [%c] [%t] %m%n</pattern> <charset>UTF-8</charset> </encoder>

相关内容:Tomcat下使用Log4j 接管 catalina.out 日志文件生成方式,解决catalina.out日志文件过大问题

[   1. 准备jar包:     log4j-1.2.17.jar (从 http://www.apache.org/dist/logging/log4j/1.2.17/ 下载)     tomcat-juli.jar, tomcat-juli-

可是在启动时又提示找不到pattern。

因此两个方法都以失败而告终。可能是我没有找到正确的设置方法,如果有成功设置的朋友请分享。

最后,想到logback默认应该使用程序运行时的编码,也就是tomcat启动时的编码,那么就可以通过设置tomcat启动时的JVM参数来更改编码:

打开catalina.bat,在代码的第一行即set CATALINA_OPTS之前,增加一行:

set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8

重新启动tomcat测试,日志文件正常。

相关内容:解决Tomcat含有中文的文件、图片的不能下载、显示的问题

[这是解决Tomcat含有中文的文件、图片的不能下载、显示的问题: 修改server.xml文件: 找到 enableLookups="false" redirectPort="8443" acceptCount=

相关问题

评论

写下你的理解