解决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测试,日志文件正常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过在logback配置文件中设置相应的日志路径来实现将日志文件放置在子模块文件夹中。具体步骤如下: 1. 在子模块中创建一个文件夹用来存放日志文件,例如:logs。 2. 在子模块的src/main/resources目录下创建logback.xml文件,并在其中设置日志路径。示例代码如下: ```xml <configuration> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${catalina.home}/logs/myapp/myapp.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${catalina.home}/logs/myapp/myapp.%d{yyyy-MM-dd}.log</fileNamePattern> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <logger name="com.myapp" level="DEBUG" additivity="false"> <appender-ref ref="FILE" /> </logger> <root level="ERROR"> <appender-ref ref="FILE" /> </root> </configuration> ``` 其中`<file>`标签中的路径为日志文件的绝对路径,可以使用`${catalina.home}`变量指定tomcat的安装路径。上面的示例代码将日志文件存放在`logs`文件夹下的`myapp`子文件夹中。 3. 在子模块的pom.xml文件中添加logback依赖,示例代码如下: ```xml <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> ``` 至此,日志文件就会被存放在子模块的指定文件夹中了,可以通过相对路径或者绝对路径访问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值