1
我將顯示log4j2與JSONLayout相同的消息上的對象。 例如我的配置是:當JSONLayout添加json對象到log4j2時
貓log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<File name="Json" fileName="/home/jeus/log/loggerjson/main.log" bufferedIO="true" advertiseURI="file://home/jeus/log/loggerjson/main1.log" advertise="true">
<JSONLayout compact="true" locationInfo="true" complete="false" eventEol="true" properties="true" propertiesAsList="true"/>
</File>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Json"/>
</Root>
</Loggers>
我出去把輸出:
貓的/ home/JEUS /日誌/ loggerjson/main.log
{
"timeMillis":1502359773290,
"thread":"main",
"level":"INFO",
"loggerName":"com.jeus.logger.json.loggerjson.Main",
"message":"This message is a raw",
"endOfBatch":false,
"loggerFqcn":"org.apache.logging.log4j.spi.AbstractLogger",
"contextMap":[ ],
"threadId":1,
"threadPriority":5,
"source":{
"class":"com.jeus.logger.json.loggerjson.Main",
"method":"main",
"file":"Main.java",
"line":61
}
}
我添加了一個JSON對象登錄,但不顯示在消息中的JSON對象,並表明,\」性格特徵
JSON對象:
{"line_id": 12,"play_name":"Jeus"}
我的日誌代碼:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Main {
private static final Logger LOGGER = LogManager.getLogger(Main.class);
public static void main(String[] args) {
String message = "{\"line_id\": 12,\"play_name\": \"Jeus\"}";
LOGGER.info(message);
}
}
輸出爲:
{
"timeMillis":1502361394238,
"thread":"main",
"level":"INFO",
"loggerName":"com.jeus.logger.json.loggerjson.Main",
"message":"{\"line_id\": 12,\"play_name\": \"Jeus\"}",
"endOfBatch":false,
"loggerFqcn":"org.apache.logging.log4j.spi.AbstractLogger",
"contextMap":[
],
"threadId":1,
"threadPriority":5,
"source":{
"class":"com.jeus.logger.json.loggerjson.Main",
"method":"main",
"file":"Main.java",
"line":62
}
}
,但我會顯示消息作爲一個JSON對象相同的:
"message":{"line_id": 12,"play_name":"Jeus"},
可能有辦法做到這一點,不知道。請在log4j用戶郵件列表上詢問完整的Log4j2社區的輸入信息。 –
我認爲它會在「(雙引號)之前顯示\(反斜槓),否則,生成的日誌文件將不會是有效的JSON文件。 –
另一個原因是log4j使用Jackson以JSON格式記錄日誌消息,如果你寫json輸出流中的字符串,反斜槓將在那裏以雙引號標記。 –