使用保险丝7(Karaf版本4.2.0.fuse-000237-红帽-1)
试图让SocketAppender工作。最合理的猜测以下,加入org.ops4j.pax.logging.cfg
# ELK appender
log4j2.appender.elk.type = SocketAppender
log4j2.appender.elk.name = ELK
log4j2.appender.elk.remoteHost=10.0.0.2
log4j2.appender.elk.port=12202
log4j2.appender.elk.application=QA
log4j2.appender.elk.reconnectionDelay=0
log4j2.rootLogger.appenderRef.ELK.ref = ELK
但是,这只是停止所有日志,甚至控制台。
实际上,我试图让logstash-gelf appender工作,但使用保险丝7定制的附加器/ Karaf看起来一团糟。 (见link)。我怀疑这是不可能获得成功。
SocketAppender在保险丝6做工精细用log4j的。 在设置的主要区别是这条线,这是不适用现在log4j2:
log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer
-------------编辑:
# ELK appender
log4j2.appender.elk.type = Socket
log4j2.appender.elk.name = ELK
log4j2.appender.elk.layout.type = GelfLayout
log4j2.appender.elk.remoteHost=10.0.0.2
log4j2.appender.elk.port=12202
log4j2.appender.elk.application=QA
log4j2.appender.elk.reconnectionDelay=0
log4j2.rootLogger.appenderRef.ELK.ref = ELK
这不是造成至少日志。同时还发现GelfLayout,这或许能取代logstash-GELF附加目的地,如果它工作。
------------- EDIT 2 ----回复格热戈日:
感谢您的答复...不幸的是没有工作还是......我已经改变了线以下,如下所述:
# ELK appender
log4j2.appender.socket.type = Socket
log4j2.appender.socket.name = Socket
log4j2.appender.socket.host=localhost
log4j2.appender.socket.port=12202
log4j2.appender.socket.protocol=TCP
log4j2.appender.socket.layout.type = JsonLayout
log4j2.rootLogger.appenderRef.Socket.ref = Socket
并开始运行的netcat
[root@ldkr03 etc]# nc -lk 12202
(not showing anything...)
该log:log test
显示16:10:34.747 INFO [pipe-log:log test] test
但不显示在nc -lk 12202
窗口任何东西。
此外,也许是相关的,但它写到控制台就好了:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
-------------编辑3 ----
切换到:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</dependency>
但仍然没有。
我用这个配置的appender:
log4j2.appender.socket.type = Socket
log4j2.appender.socket.name = Socket
log4j2.appender.socket.host = localhost
log4j2.appender.socket.port = 5666
log4j2.appender.socket.protocol = TCP
log4j2.appender.socket.layout.type = JsonLayout
这附上这个附加目的地到根记录:
log4j2.rootLogger.appenderRef.Socket.ref = Socket
我开始nc
使用nc -lk 5666
和生产使用log:log asd
从Karaf外壳控制台日志条目。 Netcat最早印刷是这样的:
{
"timeMillis" : 1549546648409,
"thread" : "pipe-log:log asd",
"level" : "INFO",
"loggerName" : "org.apache.karaf.log.core",
"message" : "asd",
"endOfBatch" : false,
"loggerFqcn" : "org.ops4j.pax.logging.log4j2.internal.PaxLoggingServiceImpl",
"threadId" : 172,
"threadPriority" : 5
}
如果检查https://logging.apache.org/log4j/2.x/manual/appenders.html#SocketAppender没有remoteHost
财产,但host
。