Log4cplus: сервер журналов SocketAppender - PullRequest
0 голосов
/ 09 ноября 2018

Я хочу лучше понять, как Log4cplus SocketAppender работает с сервером журналов, который получает события этого приложения.

Я прочитал код src Log4cplus для сервера регистрации и socketappender, и я буду рад получить разъяснения:

Может ли SocketAppender отправлять события только на сервер журналов Log4cplus, а не на любой другой сервер? и если это так: означает ли это, что если я хочу отправлять сообщения журнала на удаленную машину, эта машина должна быть установлена ​​с библиотекой Log4cplus?

Я также хотел бы знать, работает ли этот сервер регистрации Log4cplus как служба? и требует ли он специальной настройки и предварительной настройки для его использования?

Ответы [ 2 ]

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

Я просто хотел поделиться, как я использовал SocketAppender (эта настройка также работает для контейнеров докеров, находящихся в одной сети).

/ usr / share /asticsearch / config/log4j2.properties

status = error

appender.console.type = Console
appender.console.name = console
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%m%n

appender.socket.type=Socket
appender.socket.name=socket
appender.socket.port=601
appender.socket.host=api
appender.socket.reconnectDelayMillis=10000
appender.socket.layout.type = PatternLayout
appender.socket.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%m%n

rootLogger.level = info
rootLogger.appenderRef.console.ref = console
rootLogger.appenderRef.socket.ref = socket

во втором контейнере, который я использовал syslog-ng :

  • apk add syslog-ng
  • vi /etc/syslog-ng/syslog-ng.conf
  • syslog-ng -f /etc/syslog-ng/syslog-ng.conf

/ etc / syslog-ng / syslog-ng.conf

@version: 3.13

source s_network {
    network(
        transport(tcp)
        port(601)
    );
};

log {
    source(s_network);
    destination(d_network);
};

destination d_network {
    file("/var/log/es_slowlog.log", template("${MSGHDR}${MESSAGE}\n"));
};

Обратите внимание, что@version: должен соответствовать вашей версии syslog-ng.Вы можете проверить это, вызвав syslog-ng -V.

0 голосов
/ 11 ноября 2018

Может ли SocketAppender отправлять события только на сервер журналов Log4cplus, а не на любой другой сервер?

Да и да.

означает ли это, что если я хочу отправлять сообщения журнала на удаленную машину, эта машина должна быть установлена ​​с библиотекой Log4cplus?

Ну, вроде как. Если вы хотите использовать только SocketAppender, вам придется использовать сервер регистрации. Вы также можете использовать SysLogAppender и отправлять на удаленный сервер, используя это. Очевидно, что вы должны иметь службу системного журнала и разрешить получение из сети в нем. Вы также можете написать свой собственный appender, который отправляет события на любой сервер по вашему желанию.

Я также хотел бы знать - этот сервер журналирования Log4cplus работает как служба?

Нет, это простой исполняемый файл, который прослушивает сокет.

и требует ли он специальной настройки и предварительной настройки для его использования?

Требуется файл конфигурации, чтобы он знал, где регистрировать события.

...