Logstash 如何添加字段(不显示日志级别)?
Logstash how can add feild(not show loglevel)?
我的代码是这样的,从其他项目copy过来的,但是不知道为什么在json里找不到loglevel字段,详细代码:
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
Logger logger = context.getLogger("ROOT");
if (enabled == null || enabled) {
if (logger.getAppender(APPENDER_NAME) == null) {
String destination = host + ":" + port;
try {
DestinationParser.parse(destination, AbstractLogstashTcpSocketAppender.DEFAULT_PORT);
} catch (RuntimeException e) {
throw new IllegalArgumentException("Invalid host and port : " + destination);
}
LogstashTcpSocketAppender appender = new LogstashTcpSocketAppender();
appender.setContext(context);
appender.addDestination(destination);
appender.setName(APPENDER_NAME);
LogstashEncoder encoder = new LogstashEncoder();
encoder.setCustomFields("{\"application_name\":\"" + applicationName + "\"}");
encoder.setContext(context);
appender.setEncoder(encoder);
appender.start();
encoder.start();
logger.addAppender(appender);
logger.setLevel(Level.ALL);
https://github.com/Dreampie/docker-elk 使用 docker-compose up -d --build
启动 elk,但 logstash 结果不包含 loglevel,logstash 使用 codec:"json"
:
{
"_index": "logstash-2016.10.10",
"_type": "logs",
"_id": "AVetGEgU-dbBmx39fbyl",
"_score": null,
"_source": {
"message": "{\"@timestamp\":\"2016-10-10T13:33:24.998+08:00\",\"@version\":1,\"message\":\"Retrieving delivery for Consumer: tags=[{amq.ctag-qURSKFA3CagYtd7y9EDAFQ=springCloudBus.anonymous.QTc6psI8RbOJm5oNFurqHA}], channel=Cached Rabbit Channel: AMQChannel(amqp://acfun@192.168.60.201:5672/,1), conn: Proxy@8440641 Shared Rabbit Connection: SimpleConnection@62e8f5bf [delegate=amqp://acfun@192.168.60.201:5672/], acknowledgeMode=AUTO local queue size=0\",\"logger_name\":\"org.springframework.amqp.rabbit.listener.BlockingQueueConsumer\",\"thread_name\":\"springCloudBus.anonymous.QTc6psI8RbOJm5oNFurqHA-1\",\"level\":\"DEBUG\",\"level_value\":10000,\"LOG_LEVEL_PATTERN\":\"%5p\",\"level\":\"DEBUG\",\"application_name\":\"user-api-provider\"}",
"@version": "1",
"@timestamp": "2016-10-10T05:37:11.819Z",
"host": "192.168.60.228",
"port": 52196
},
"fields": {
"@timestamp": [
1476077831819
]
},
"sort": [
1476077831819
]
}
是的,我知道了,codec
在 json
中没有得到 loglevel 字段和其他字段,json_lines
工作正常
codec => json_lines
我的代码是这样的,从其他项目copy过来的,但是不知道为什么在json里找不到loglevel字段,详细代码:
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
Logger logger = context.getLogger("ROOT");
if (enabled == null || enabled) {
if (logger.getAppender(APPENDER_NAME) == null) {
String destination = host + ":" + port;
try {
DestinationParser.parse(destination, AbstractLogstashTcpSocketAppender.DEFAULT_PORT);
} catch (RuntimeException e) {
throw new IllegalArgumentException("Invalid host and port : " + destination);
}
LogstashTcpSocketAppender appender = new LogstashTcpSocketAppender();
appender.setContext(context);
appender.addDestination(destination);
appender.setName(APPENDER_NAME);
LogstashEncoder encoder = new LogstashEncoder();
encoder.setCustomFields("{\"application_name\":\"" + applicationName + "\"}");
encoder.setContext(context);
appender.setEncoder(encoder);
appender.start();
encoder.start();
logger.addAppender(appender);
logger.setLevel(Level.ALL);
https://github.com/Dreampie/docker-elk 使用 docker-compose up -d --build
启动 elk,但 logstash 结果不包含 loglevel,logstash 使用 codec:"json"
:
{
"_index": "logstash-2016.10.10",
"_type": "logs",
"_id": "AVetGEgU-dbBmx39fbyl",
"_score": null,
"_source": {
"message": "{\"@timestamp\":\"2016-10-10T13:33:24.998+08:00\",\"@version\":1,\"message\":\"Retrieving delivery for Consumer: tags=[{amq.ctag-qURSKFA3CagYtd7y9EDAFQ=springCloudBus.anonymous.QTc6psI8RbOJm5oNFurqHA}], channel=Cached Rabbit Channel: AMQChannel(amqp://acfun@192.168.60.201:5672/,1), conn: Proxy@8440641 Shared Rabbit Connection: SimpleConnection@62e8f5bf [delegate=amqp://acfun@192.168.60.201:5672/], acknowledgeMode=AUTO local queue size=0\",\"logger_name\":\"org.springframework.amqp.rabbit.listener.BlockingQueueConsumer\",\"thread_name\":\"springCloudBus.anonymous.QTc6psI8RbOJm5oNFurqHA-1\",\"level\":\"DEBUG\",\"level_value\":10000,\"LOG_LEVEL_PATTERN\":\"%5p\",\"level\":\"DEBUG\",\"application_name\":\"user-api-provider\"}",
"@version": "1",
"@timestamp": "2016-10-10T05:37:11.819Z",
"host": "192.168.60.228",
"port": 52196
},
"fields": {
"@timestamp": [
1476077831819
]
},
"sort": [
1476077831819
]
}
是的,我知道了,codec
在 json
中没有得到 loglevel 字段和其他字段,json_lines
工作正常
codec => json_lines