gkn*_*uth 4 java logging utf-8 log4j2 windows-server-2012-r2
我正在将Unicode字符写入Log4J2日志.在一台机器上(Windows 8),我在日志中看到了这一点:
2016-08-30 16:44:00.958|English: The quick brown fox jumped over the lazy dog.
2016-08-30 16:44:00.960|German: Falsches Üben von Xylophonmusik quält jeden größeren Zwerg.
2016-08-30 16:44:00.960|Russian 1: ? ????? ??? ??? ?? ??????? ??, ?? ????????? ?????????!
2016-08-30 16:44:00.960|Russian 2: ????? ?? ??? ???? ?????? ??????????? ????? ?? ????? ???.
2016-08-30 16:44:00.960|Chinese: ?????????
2016-08-30 16:44:00.960|Japanese: ??????? ????? ?????? ????? ??????? ????? ??????? ?????
2016-08-30 16:44:00.960|Korean: ??? ? ???? ???
Run Code Online (Sandbox Code Playgroud)
在另一台计算机(Windows Server 2012R2)上,我看到:
2016-08-30 16:50:41.676|English: The quick brown fox jumped over the lazy dog.
2016-08-30 16:50:41.676|German: Falsches Üben von Xylophonmusik quält jeden größeren Zwerg.
2016-08-30 16:50:41.676|Russian 1: ? ????? ??? ??? ?? ??????? ??, ?? ????????? ?????????!
2016-08-30 16:50:41.676|Russian 2: ????? ?? ??? ???? ?????? ??????????? ????? ?? ????? ???.
2016-08-30 16:50:41.676|Chinese: ?????????
2016-08-30 16:50:41.676|Japanese: ??????? ????? ?????? ????? ??????? ????? ??????? ?????
2016-08-30 16:50:41.676|Korean: ??? ? ???? ???
Run Code Online (Sandbox Code Playgroud)
如果Log4J2默认写入UTF-8,为什么第二个系统上的日志文件只包含问号?也就是说,第二个系统可能(也可能是)缺少字体,但第二个系统上的日志文件本身包含实际问号,当使用hexdump工具时,我希望至少看到UTF-8字符的二进制文件在文件中.换句话说,我可以理解为什么未知字符可能会错误地呈现,我只是不明白为什么正确的Unicode没有写入文件,如果编写的进程是JVM,它使用Unicode作为字符.
xav*_*xav 12
您是否尝试在Log4j配置文件中为Log4j布局强制执行UTF-8字符集?例如,使用PatternLayout:
<Configuration ...>
...
<PatternLayout pattern="..." charset="UTF-8"/>
...
</Configuration>
Run Code Online (Sandbox Code Playgroud)
有关Log4j编码问题的更多信息,请参阅https://logging.apache.org/log4j/2.x/manual/layouts.html.
| 归档时间: |
|
| 查看次数: |
2886 次 |
| 最近记录: |