OSGi/Fuse 7 中的 SocketAppender
SocketAppender in OSGi / Fuse 7
使用 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 working, but using a custom appender in Fuse 7 / Karaf looks like a total mess. (See 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。
------------- 编辑 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
window 中不显示任何内容。
此外,也许相关,尽管它可以很好地写入控制台:
<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 -lk 5666
开始 nc
并使用 log:log asd
从 Karaf shell 控制台生成日志条目。 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
.
使用 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 working, but using a custom appender in Fuse 7 / Karaf looks like a total mess. (See 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。
------------- 编辑 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
window 中不显示任何内容。
此外,也许相关,尽管它可以很好地写入控制台:
<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 -lk 5666
开始 nc
并使用 log:log asd
从 Karaf shell 控制台生成日志条目。 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
.