Ответ 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
на стороне отправки - то, что проходит по сети, - это весь объект события журнала, это сторона-получатель, ответственная за выполнение макета.