SocketAppender OSGi中/保险丝7

问题描述 投票:0回答:1

使用保险丝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>

但仍然没有。

log4j osgi log4j2 apache-karaf jbossfuse
1个回答
1
投票

我用这个配置的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

© www.soinside.com 2019 - 2024. All rights reserved.