天天看點

解決Logback生成的日志檔案不能顯示中文的問題

      新的項目中使用logback+slf4j替換了原來的log4j+slf4j,并且是作為一個Web Application在tomcat中運作,發現生成的日志檔案中所有中文都是亂碼。

      首先想到的解決方法就是logback中設定生成的日志檔案的編碼。在網上找到了兩種設定,但是都不起作用:

      1. 設定Encoding。在appender中增加一行<Encoding>UTF-8</Encoding>,但是在啟動中報錯,說是不能識别Encoding元素。有人說Encoding在0.9.22以後版本中已經不能用了。于是就找到了第二種方法。

<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測試,日志檔案正常。