SocketAppender в OSGi / Fuse 7 - PullRequest
       37

SocketAppender в OSGi / Fuse 7

0 голосов
/ 06 февраля 2019

Использование 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 работает, но использование нестандартного аппендера в Fuse 7 / Karaf выглядит как полный беспорядок.(См. ссылка ).Я сомневаюсь, что это когда-нибудь сработает.

SocketAppender работал нормально с log4j в Fuse 6.
Основным отличием в настройке была эта строка, которая сейчас не применима к 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, который мог бы заменить appst logstash-gelf, если бы он работал.

------------- РЕДАКТИРОВАТЬ 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>

Но все еще нет.

1 Ответ

0 голосов
/ 07 февраля 2019

Я использовал эту конфигурацию для 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

и это, чтобы присоединить этот appender к корневому логгеру:

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.

...