【发布时间】:2019-06-30 10:33:43
【问题描述】:
使用 Fuse 7(Karaf 版本 4.2.0.fuse-000237-redhat-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 工作,但在 Fuse 7 / Karaf 中使用自定义附加程序看起来一团糟。 (见link)。我怀疑它永远不会起作用。
SocketAppender 在 Fuse 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 appender。
------------- EDIT 2 ---- 回复 Grzegorz:
感谢您的回复...不幸的是仍然无法正常工作... 如所述,我已将这些行更改为以下内容:
# 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>
但还是没有。
【问题讨论】:
-
好的,“log4j2.appender.elk.type = Socket”至少阻止了它使整个日志系统崩溃……但 SocketAppender 仍然无法正常工作。
-
好的,现在可以了。德普。不知道我做了什么,但有些愚蠢。
标签: log4j osgi log4j2 apache-karaf jbossfuse