Подтвердить что ты не робот

Как сделать 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
4b9b3361

Ответ 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 для файла и т.д.).