首先想到的解決方法就是logback中設(shè)置生成的日志文件的編碼。在網(wǎng)上找到了兩種設(shè)置,但是都不起作用:
1. 設(shè)置Encoding。在appender中增加一行<Encoding>UTF-8</Encoding>,但是在啟動中報錯,說是不能識別Encoding元素。有人說Encoding在0.9.22以后版本中已經(jīng)不能用了。于是就找到了第二種方法。
2. 在Encoder中設(shè)置charset。logback實(shí)現(xiàn)了集中不同的Encoder,其中LayoutWrappingEncoder中有一個charset屬性,并且有人提到可以通過charset設(shè)置日志文件編碼。于是就將encoder屬性修改為:
可是在啟動時又提示找不到pattern。
因此兩個方法都以失敗而告終??赡苁俏覜]有找到正確的設(shè)置方法,如果有成功設(shè)置的朋友請分享。
最后,想到logback默認(rèn)應(yīng)該使用程序運(yùn)行時的編碼,也就是tomcat啟動時的編碼,那么就可以通過設(shè)置tomcat啟動時的JVM參數(shù)來更改編碼:
打開catalina.bat,在代碼的第一行即set CATALINA_OPTS之前,增加一行:
set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8
重新啟動tomcat測試,日志文件正常。