如何将log4j日志文件更改为utf8

Man*_*nuj 13 java logging log4j utf-8

我已经交了一个使用log4j作为记录器应用程序的代码.如何为它生成UTF8日志文件?log4j创建的日志文件目前是ASCII格式.

我试过以下

按照说明设置日志文件的文件编码

vi current
:set bomb
:set fileencoding=utf-8
:wq
Run Code Online (Sandbox Code Playgroud)

事实上,在执行上述操作后,日志文件本身会停止工作,即由于某些奇怪的原因,不会再将日志写入文件

我也尝试过更改.properties文件

log4j.rootLogger=TRACE, logfile

log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.encoding=UTF-8
log4j.appender.logfile.File=/usr/vm/log/webconsole/current
log4j.appender.logfile.Append=true
log4j.appender.logfile.MaxFileSize=5MB
log4j.appender.logfile.MaxBackupIndex=1
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=[%5p] %d{ISO8601} (%F:%M:%L)%n%m%n%n

log4j.logger.com.company.npm=ALL
log4j.logger.org.apache.axis=OFF
Run Code Online (Sandbox Code Playgroud)

由于某种原因,翻转后的日志文件是ASCII格式

我正在使用log4j 1.2.8

当我启用log4j调试时,我得到以下输出

@4000000053b16b142afa961c log4j: Parsing for [root] with value=[TRACE, logfile, cdr].
@4000000053b16b142afc630c log4j: Level token is [TRACE].
@4000000053b16b142afe85ec log4j: Category root set to DEBUG
@4000000053b16b142aff510c log4j: Parsing appender named "logfile".
@4000000053b16b142e3ebccc log4j: Parsing layout options for "logfile".
@4000000053b16b143333a0bc log4j: Setting property [conversionPattern] to [[%5p] %d{ISO8601} (%F:%M:%L)%n%m%n%n].
@4000000053b16b1433442f04 log4j: End of parsing for "logfile".
@4000000053b16b14343015a4 log4j: Setting property [file] to [/usr/vm/log/webconsole/current].
@4000000053b16b1434331b14 log4j: Setting property [append] to [true].
@4000000053b16b1434350b2c log4j: Setting property [maxFileSize] to [100KB].
@4000000053b16b14343885cc log4j: Setting property [maxBackupIndex] to [1].
@4000000053b16b14343a79cc log4j: Setting property [encoding] to [UTF-8].
@4000000053b16b14343d311c log4j: setFile called: /usr/vm/log/webconsole/current, true
@4000000053b16b1434937edc log4j: setFile ended
@4000000053b16b143496a774 log4j: Parsed "logfile" options.
@4000000053b16b1434a97fac log4j: Parsing appender named "cdr".
@4000000053b16b150111c014 log4j: Parsed "cdr" options.
@4000000053b16b1501166394 log4j: Parsing for [com.company.npm] with value=[ALL].
@4000000053b16b150118d87c log4j: Level token is [ALL].
@4000000053b16b15011abcdc log4j: Category com.company.npm set to ALL
@4000000053b16b150122003c log4j: Handling log4j.additivity.com.company.npm=[null]
@4000000053b16b150123d4fc log4j: Finished configuring.




@4000000053b16b17086f0114 log4j: rolling over count=102406
@4000000053b16b1708703d7c log4j: maxBackupIndex=1
@4000000053b16b170910fdd4 log4j: Renaming file /usr/vm/log/webconsole/current to /usr/vm/log/webconsole/current.1
@4000000053b16b1709140b14 log4j: setFile called: /usr/vm/log/webconsole/current, false
@4000000053b16b170916494c log4j: setFile ended
Run Code Online (Sandbox Code Playgroud)

小智 1

它应该是:

    log4j.appender.FILE.encoding=UTF-8
Run Code Online (Sandbox Code Playgroud)

  • 如果你向OP解释为什么他的代码不起作用以及为什么你的答案有效,而不是仅仅给出没有解释的解决方案,这将是一个更好的答案 (13认同)