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
И что самое важное: Где \ Как я могу увидеть свои логи?
2 ответа
Вы можете запустить сервер, используя
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
на отправляющей стороне - все, что идет по сети, - это весь объект события протоколирования, а принимающая сторона отвечает за создание макета.
Чтобы запустить сервер, просто введите ниже команду в командной строке, и сервер будет запущен:
java -classpath C: Users.m2repositorylog4jlog4j1.2.17log4j-1.2.17.jar org.apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties
Пожалуйста, не забудьте указать правильный путь к log4j.jar в вашей системе.