我有一個奇怪的問題,我用log4j
打印日誌到控制檯打印錯誤的字符,但使用System.out.println
工作正常。Intelli-j tomcat服務器控制檯編碼問題與log4j的編碼= UTF-8?
我已經明確地設置編碼設置爲UTF-8:
log4j.rootLogger=DEBUG,console,error
####################Conole logs######################
log4j.appender.console= org.apache.log4j.ConsoleAppender
log4j.appender.console.encoding=UTF-8 ###Here , if I commented this line, it works fine
log4j.appender.console.Threshold = DEBUG
log4j.appender.console.layout=org.apache.log4j.SimpleLayout
log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
同一行中,我使用:
LogUtil.debug(line);
System.out.println("from system.out: "+line);
控制檯:
DEBUG - 閭d簺騫存垜浠竴璧瘋拷榪囩殑濂衝=鑷存垜浠粓灝嗛�濆幓鐨勯潚鏄�
from system.out: 那些年我們一起追過的女孩=致我們終將逝去的青春
但是,如果我註釋掉log4j.appender.console.encoding=UTF-8
,它的工作!
請注意,當我使用eclipse之前,exsting的代碼工作正常,但今天我試圖運行它在我的IDEA14然後找到問題。
猜測它可能是在默認控制檯上的一些編碼設置問題?
PS:我的項目的編碼設置爲UTF-8以及
這也是我的猜測。當您顯式指定log4j的編碼時,它會覆蓋默認行爲。我相信默認行爲是讓System.Out.Print()函數處理編碼轉換。 –