Logback无法正确记录文件中的亚洲字符

时间:2015-01-12 16:11:45

标签: java encoding logback

我的Logback日志显示了许多内容,例如

黑â~‰CS’

每当遇到亚洲字符时,在日志文件中

。看起来该文件是unicode而不是UTF-8。

这是我的Logback groovy配置

/*
 * Logback configuration in Groovy.
 * 
 * While this appears to be the Logback preference going forward you can still
 * use an XML configuration file by deleting this one and creating a 
 * logback.xml in its place.
 */

import java.nio.charset.Charset
import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.core.ConsoleAppender

import static ch.qos.logback.classic.Level.*

def DEFAULT_PATTERN = "%d [%thread] %-5level %logger - %msg%n"

appender("STDOUT", ConsoleAppender) {
	encoder(PatternLayoutEncoder) { 
		pattern = DEFAULT_PATTERN 
		charset = Charset.forName("UTF-8")
	}
}

appender("FILE", RollingFileAppender) {
  file = "logs/stdout.log"
  append = true
  encoder(PatternLayoutEncoder) {
    pattern = DEFAULT_PATTERN
    charset = Charset.forName("UTF-8")
  }
  filter(ch.qos.logback.classic.filter.ThresholdFilter) {
    level = INFO
  }
  rollingPolicy(ch.qos.logback.core.rolling.TimeBasedRollingPolicy) {
    fileNamePattern = "logs/stdout-%d{yyyy-MM-dd}.%i.log"
    maxHistory = 10
    timeBasedFileNamingAndTriggeringPolicy(ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP) {
      maxFileSize = "1MB"
    }
  }
}

appender("ERROR", RollingFileAppender) {
  file = "logs/errors.log"
  append = true
  encoder(PatternLayoutEncoder) {
    pattern = DEFAULT_PATTERN
    charset = Charset.forName("UTF-8")
  }
  filter(ch.qos.logback.classic.filter.ThresholdFilter) {
    level = ERROR
  }
  rollingPolicy(ch.qos.logback.core.rolling.TimeBasedRollingPolicy) {
    fileNamePattern = "logs/errors-%d{yyyy-MM-dd}.%i.log"
    maxHistory = 10
    timeBasedFileNamingAndTriggeringPolicy(ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP) {
      maxFileSize = "1MB"
    }
  }
}

/* Make Spring less verbose. */
//logger("org.springframework", INFO)

/* Quieten Thymeleaf. */
//logger("org.thymeleaf", INFO)

/* Jetty can be really noisy on a shaded jar. */
//logger("org.eclipse.jetty.webapp.WebAppClassLoader", INFO)
//logger("org.eclipse.jetty.util.resource.JarResource", INFO)

/* Quieten Jetty in general. */
//logger("org.eclipse", ERROR);

def appenders = []
appenders.add("STDOUT")
appenders.add("FILE")
appenders.add("ERROR")

root(INFO, appenders)

另外,当我启动JAR时,我还指定了-Dfile.encoding = UTF-8。 我真的不知道如何解决这个问题。

如果你知道什么可以修复它,请告诉我。

非常感谢

1 个答案:

答案 0 :(得分:0)

您已在logback properties / xml中将字符集模式设置为UTF-8

您应该查看正在查看日志的工具。需要做一些设置。

1. Notepad         :  By changing font to "Lucida Console"
2. Notepad++       :  By changing Encoding to "UTF-8"
3. Console         :  By changing font and codepage.