解决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> 

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

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

 

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

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

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

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

时间: 2024-08-02 19:12:46

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

彻底解决使用Doxygen 1.5.6自动生成的chm文件导航栏中文乱码问题

最近升级了一下doxygen到最新版1.5.6,结果发现生成的chm文件导航栏中文会出现乱码,折腾了一天,终于查明原因并解决,特此分享给大家. 原因: doxygen 1.5.6版(不知道从哪个版本开始的)内部一律使用UTF-8编码,生成的index.hhc文件也是使用UTF-8编码,然而微软的hhc编译工具不支持UTF-8编码,结果导致编译出的chm文件正文部分中文一切正常,但导航栏全是乱码.从网上搜了一圈,好像大家基本都遇到了这一情况,解决办法各异. 解决办法: 解决办法的核心就是将inde

was7 slf4j logback 无法产生日志文件

问题描述 java项目,目前采用slf4j+logback记录日志,tomcat运行输出无问题.但将应用部署到was7就无法生存日志文件.求给位大牛不吝赐教<?xmlversion="1.0"encoding="UTF-8"?><configuration><propertyname="LOGBACK_HOME"value="C:/temp/logs/"/><!--toconsole-

解决windows server 2008图片文件无法显示缩略图问题

  解决办法: 1.打开资源管理器(即我的电脑),文件菜单下方有一个组织菜单,如下步骤:"组织"–"文件夹和搜索选项",打开文件夹选项界面,如下图示: 2.切换至"查看"选项卡,找到"始终显示图标,从不显示缩略图"项,你会发现打勾了,将勾去掉–确定,缩略图就显示出来了,步骤如下图所示:

怎样解决Win8系统下pdf文件不显示缩略图的问题

在Windows 8.1系统下,安装了 Adobe Reader XI 11.0.0版本后,PDF文件在文件夹中无法显示缩略图.这对于需要查看大量PDF文件的用户来说非常不便,该怎么办呢? 解决方法 出现这个问题是由于系统中的Adobe Reader PDF缩略图预览功能失效了,要解决这个问题,就需要安装Adobe Reader PDF缩略图预览失效补丁.安装后,PDF文件在文件夹中便能够正常显示缩略图.   PDF是通用的文稿文件标准,无数的公司.组织.机构都使用PDF制作文稿.对于日渐流行的

解决javah生成c头文件时找不到android类库的问题

问题描述: cmd下面进入工程的bin/classes下面,执行 javah xxx.xxx.A 生成头文件, 一般来说都是可以成功执行的,但是如果xxx.xxx.A类里面引用了android类库里面的类的话,就会报异常,如下图: 上面因为引用了android.graphics.Bitmap,所以导致生成头文件失败.     解决办法: 执行javah命令的时候,可以指定classpath,将需要的jar包引入进去就可以了.如下 javah -classpath D:\ide\android-s

log4j每天生成日志文件

问题描述 log4j每天生成日志文件 我在本机配置的log4j,是可以第天生成日志文件的,但我把项目部署到win server 2008以后,就不会每天生成了,而是每天追加到第一次启动时生成的日志文件里面,不知道是咋回事呢,权限那些也是正常的,下面是我的log4j配置: #日志级别INFO,输出到控制台.文件 log4j.rootLogger=INFO,CONSOLE,FILE #控制台输出配置 log4j.appender.CONSOLE=org.apache.log4j.ConsoleApp

Apache日志文件太大解决办法(access.log error.log)

有没有发现Apache生成的日志文件一天比一天大,不是一般大,若你apache安装在C盘,那可惨了,不几天硬盘就满了,太恐怖了,有没有办法优化一下日志,让它不那么大?答案是有的. 一.停止Apache服务,删除Apache下/logs/目录中的error.log和access.log文件. 二.打开Apache的conf/httpd.conf配置文件,找到以下配置信息:  代码如下 复制代码 ErrorLog logs/error.log CustomLog logs/access.log co

sql server日志文件总结及日志满的处理办法

server     交易日志(Transaction logs)是数据库结构中非常重要但又经常被忽略的部分.由于它并不像数据库中的schema那样活跃,因此很少有人关注交易日志. 交易日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中.对于任何每一个交易过程,交易日志都有非常全面的记录,根据这些记录可以将数据文件恢复成交易前的状态.从交易动作开始,交易日志就处于记录状态,交易过程中对数据库的任何操作都在记录范围,直到用户点击提交或后退后才结束记录.每

sqlserver日志文件总结及充满处理

交易日志(Transaction logs)是数据库结构中非常重要但又经常被忽略的部分.由于它并不像数据库中的schema那样活跃,因此很少有人关注交易日志. 交易日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中.对于任何每一个交易过程,交易日志都有非常全面的记录,根据这些记录可以将数据文件恢复成交易前的状态.从交易动作开始,交易日志就处于记录状态,交易过程中对数据库的任何操作都在记录范围,直到用户点击提交或后退后才结束记录.每个数据库都拥有至少一个