Log4j: Как использовать SocketAppender?

У меня есть ответ о том, как использовать SocketAppender (мне нужно, чтобы он собирал журналы из распределенной системы), но я новичок в log4j, и у меня нет идея использования этого образца кода.

Вероятно, у меня должны быть log4j-server.properties:

log4j.appender.SERVER=org.apache.log4j.net.SocketAppender
log4j.appender.SA.Port=4712
log4j.appender.SA.RemoteHost=loghost
log4j.appender.SA.ReconnectionDelay=10000

Но я до сих пор не знаю, как запустить сервер (как использовать эту строку)

org.apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties

И что самое главное: Где\Как я могу просмотреть свои журналы?

Ответ 1

Вы можете запустить сервер, используя

java -classpath log4j.jar org.apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties

SimpleSocketServer принимает события регистрации, отправленные на указанный номер порта удаленным SocketAppender, и записывает их так, как если бы они были созданы локально, в соответствии с конфигурацией, которую вы предоставляете в log4j-server.properties. Вам решать сконфигурировать соответствующие консольные/файловые/скользящие файлы и добавить их к соответствующим регистраторам так же, как если бы вы выполняли ведение журнала непосредственно в исходном процессе, а не трафик событий журнала через сетевой сокет. То есть если вы в настоящее время создаете локальные файлы журналов с чем-то вроде:

log4j.rootLogger=DEBUG, file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logfile.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%d] [%t] [%m]%n

то вы измените его так, чтобы отправляющая сторона log4j.properties просто произнесла

log4j.rootLogger=DEBUG, server
log4j.appender.server=org.apache.log4j.net.SocketAppender
log4j.appender.server.Port=4712
log4j.appender.server.RemoteHost=loghost
log4j.appender.server.ReconnectionDelay=10000

а серверная сторона log4j-server.properties содержит определения, которые были ранее на стороне отправки:

log4j.rootLogger=DEBUG, file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logfile.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%d] [%t] [%m]%n

В частности, обратите внимание, что нет точки, указывающей макет на SocketAppender на стороне отправки - то, что проходит по сети, - это весь объект события журнала, это сторона-получатель, ответственная за выполнение макета.

Ответ 2

Чтобы запустить команду простого типа ниже команды в командной строке, и сервер будет запущен и запущен:

java -classpath C: Users.m2repositorylog4jlog4j1.2.17log4j-1.2.17.jar org.apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties

Пожалуйста, не забудьте указать правильный путь к log4j.jar в вашей системе.