2017-08-15 61 views
1

我有以下日誌語句,我期望在日誌中產生一條彩色線條,但它沒有。日誌被設置爲寫入標準輸出,還有其他的東西是寫入彩色輸出,工作正常,所以我知道它不是終端的問題。對log4j2消息使用顏色

LoggerFactory.getLogger("foo").info("no color \\033[1;35m COLOR \\033[0m no color") 

這就是在日誌中顯示的內容。

15:59:25 15:59:25 20:59:25,268: INFO [MyClazz] no color \033[1;35m COLOR \033[0m no color 

是否可以在日誌消息中添加顏色?如果是的話如何?

回答

1

我建議不要在日誌中存儲ANSI顏色轉義序列/代碼。至少你應該測試輸出設備是否爲TTY,並且只有在輸出設備是「彩色」輸出的情況下才能寫入。

這就是說,你的問題是在逃避反斜槓,\。您的輸出應包含實際的\033字符(八進制),即\x1b(十六進制), 或27(十進制)。試試看這樣:

LoggerFactory.getLogger("foo").info("no color \033[1;35m COLOR \033[0m no color") 
+0

爲什麼你會建議不要將「在存儲日誌中存儲ANSI顏色轉義序列/代碼」。我問,因爲有很多其他東西以各種顏色輸出到我的日誌中。 –

+1

嗯,基本上是因爲你只在終端打印時纔會使用「特殊的」二進制序列(在文本文件中),它們是特定的(並且有意義)。如果您只是在終端中查看日誌,那沒問題,但是它使日誌處理對於純文本工具或非終端查看設備更加困難。 UNIX工具(如'grep')在缺省情況下(如果不是強制的話)只有在stdout轉到終端(以及文件中的純文本)時纔會打印彩色輸出。 – randomir

相關問題