首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SocketAppender in OSGi / Fuse 7

SocketAppender in OSGi / Fuse 7
EN

Stack Overflow用户
提问于 2019-02-06 12:57:44
回答 1查看 204关注 0票数 0

使用Fuse 7 (Karaf版本4.2.0.fuse-000237-redhat-1)

试着让SocketAppender发挥作用。最好的猜测是:添加到org.ops4j.pax.logging.cfg

代码语言:javascript
复制
# 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-g亲自附录正常工作,但是在Fuse 7/ Karaf中使用一个自定义的附录看起来完全是一团糟。(见链接)。我怀疑它是否会起作用。

SocketAppender在Fuse 6中与log4j合作得很好。

设置中的主要区别是这一行,它现在不适用于log4j2:

代码语言:javascript
复制
log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer

-编辑:

代码语言:javascript
复制
    # 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附录。

谢谢你的回复..。不幸的是不能继续工作..。我已经将这些行更改为如下所述:

代码语言:javascript
复制
# 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

代码语言:javascript
复制
[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窗口中没有显示任何内容。

此外,也许是相关的,尽管它可以很好地写到控制台上:

代码语言:javascript
复制
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
    </dependency>

编辑3

转到:

代码语言:javascript
复制
    <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>

但还是没有。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-07 13:39:13

我将此配置用于appender:

代码语言:javascript
复制
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

为了将这个附加器附加到根记录器上:

代码语言:javascript
复制
log4j2.rootLogger.appenderRef.Socket.ref = Socket

我使用nc启动nc -lk 5666,并使用Karaf控制台使用log:log asd生成日志条目。Netcat正在打印这样的东西:

代码语言:javascript
复制
{
  "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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54554199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档