Как сделать log4j для записи на консоль
Есть ли способ сообщить log4j записать свой журнал в файл и на консоль?
благодаря
есть мои свойства:
log4j.rootLogger=DEBUG,console,R
log4j.rootLogger=INFO, FILE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=log4j.log
log4j.appender.FILE.MaxFileSize=512KB
log4j.appender.FILE.MaxBackupIndex=3
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n
Ответы
Ответ 1
Определение корневого регистратора немного запутано.
См. Документацию log4j.
Это стандартный файл свойств Java, что означает, что строки рассматриваются как пары ключ = значение. Вторая строка log4j.rootLogger
перезаписывает первое, что объясняет, почему вы не видите ничего в app console
.
Вам нужно объединить два определения rootLogger
в один. Похоже, вы пытаетесь передать сообщения DEBUG
на консоль и INFO
сообщения в файл. Корневой регистратор может иметь только один уровень, поэтому вам нужно изменить свою конфигурацию, чтобы у добавлений были соответствующие уровни.
Пока я не подтвердил, что это правильно, я бы предположил, что это будет выглядеть примерно так:
log4j.rootLogger=DEBUG,console,file
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.file=org.apache.log4j.RollingFileAppender
Обратите внимание, что у вас также есть ошибка в корпусе - у вас есть нижний регистр консоли в одном месте и в CAPS в другом.
Ответ 2
Ваш файл log4j должен выглядеть примерно так, как показано ниже.
# Define the types of logger and level of logging
log4j.rootLogger = DEBUG,console, FILE
# Define the File appender
log4j.appender.FILE=org.apache.log4j.FileAppender
# Define Console Appender
log4j.appender.console=org.apache.log4j.ConsoleAppender
# Define the layout for console appender. If you do not
# define it, you will get an error
log4j.appender.console.layout=org.apache.log4j.PatternLayout
# Set the name of the file
log4j.appender.FILE.File=log.out
# Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true
# Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug
# Set the append to false, overwrite
log4j.appender.FILE.Append=false
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
Ответ 3
Это хорошо работает для консоли в режиме отладки
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n
Ответ 4
Напишите корневой регистратор, как показано ниже, для регистрации как на консоли, так и на FILE.
log4j.rootLogger = ОШИБКА, консоль, FILE
И напишите соответствующие определения, такие как Target, Layout и ConversionPattern (MaxFileSize для файла и т.д.).