1. Конфигурационный файл
Основной формат файла конфигурации Log4J следующий:
Скопируйте код кода следующим образом:
#Настраиваем корневой регистратор
log4j.rootLogger = [уровень], имя_приложения1, имя_приложения2, …
#Настроить место вывода информации журнала Appender
log4j.appender.appenderName = полное.полное.имя.приложения.класса
log4j.appender.appenderName.option1 = значение1
…
log4j.appender.appenderName.optionN = значениеN
#Настраиваем формат (расположение) информации журнала
log4j.appender.appenderName.layout = полное.полное.имя.макета.класса
log4j.appender.appenderName.layout.option1 = значение1
…
log4j.appender.appenderName.layout.optionN = значениеN
Где [level] — уровень вывода журнала, всего существует 5 уровней:
Скопируйте код кода следующим образом:
ФАТАЛ 0
ОШИБКА 3
ПРЕДУПРЕЖДЕНИЕ 4
ИНФОРМАЦИЯ 6
ОТЛАДКА 7
Appender — это место назначения вывода журнала. Приложения, предоставляемые Log4j, включают следующее:
Скопируйте код кода следующим образом:
org.apache.log4j.ConsoleAppender(консоль),
org.apache.log4j.FileAppender(файл),
org.apache.log4j.DailyRollingFileAppender (каждый день генерирует файл журнала),
org.apache.log4j.RollingFileAppender (генерирует новый файл, когда размер файла достигает указанного размера),
org.apache.log4j.WriterAppender (отправляет информацию журнала в потоковом формате в любое указанное место)
Макет: формат вывода журнала. Log4j предоставляет следующие макеты:
org.apache.log4j.HTMLLayout (макет в формате таблицы HTML),
org.apache.log4j.PatternLayout (можно гибко указывать шаблоны макета),
org.apache.log4j.SimpleLayout (содержит уровень и информационную строку информации журнала),
org.apache.log4j.TTCCLayout (содержит информацию о времени создания журнала, потоке, категории и т. д.)
Параметры печати: Log4J использует формат печати, аналогичный функции printf на языке C, для форматирования информации журнала, а именно:
Скопируйте код кода следующим образом:
%m Вывести сообщение, указанное в коде %p Приоритет вывода, то есть DEBUG, INFO, WARN, ERROR, FATAL.
%r Выведите количество миллисекунд, которое прошло с момента запуска приложения до вывода информации журнала. %c Выведите категорию, к которой оно принадлежит, обычно полное имя класса. %t Выведите имя потока, сгенерировавшего событие журнала %n. Выведите символ возврата каретки и перевода строки, платформа Windows — «/r/n», платформа Unix — «/n».
%d выводит дату или время точки времени журнала. Формат по умолчанию — ISO8601. Вы также можете указать формат позже, например: %d{гггг МММ дд ЧЧ:мм:сс, SSS}. : 18 октября 2002. 22:10:28, 921
%l Выводит место, где произошло событие журнала, включая имя категории, поток, в котором оно произошло, и номер строки кода. Пример: Testlog4.main(TestLog4.java: 10)
2. Инициализируйте Logger в коде: 1) Вызовите в программе метод BasicConfigurator.configure(): добавьте ConsoleAppender в корневой рекордер, установите формат вывода "%-4r [%t] %-5p %c %x - %m%n" через PatternLayout , а также Уровень по умолчанию для корневых средств ведения журнала — Level.DEBUG.
2) Конфигурация помещается в файл, имя файла передается через параметры командной строки, анализируется и настраивается через PropertyConfigurator.configure(args[x]);
3) Конфигурация помещается в файл, имя файла и другая информация передаются через переменные среды, а для анализа и настройки используется процесс инициализации по умолчанию log4j;
4) Конфигурация помещается в файл, имя файла и другая информация передаются через конфигурацию сервера приложений, а для завершения настройки используется специальный сервлет.
3. Установите уровень вывода журнала для разных приложений:
При отладке системы мы часто обращаем внимание только на вывод журнала уровня исключений, но обычно все уровни вывода помещаются в один файл. Если уровень вывода журнала — BUG! ? Тогда иди и найди его медленно.
В настоящее время мы можем подумать, что было бы здорово, если бы мы могли выводить информацию об исключениях в файл отдельно. Конечно, Log4j уже предоставляет такую функцию. Для этого нам нужно всего лишь изменить порог Appender в конфигурации, как в следующем примере:
[файл конфигурации]
Скопируйте код кода следующим образом:
### установка уровней журнала ###
log4j.rootLogger = отладка, стандартный вывод, D, E
###Вывод на консоль###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
### Вывод в файл журнала###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = журналы/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG ## Выводить журналы выше уровня DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{гггг-ММ-дд ЧЧ:мм:сс} [ %t:%r ] - [ %p ] %m%n
### Сохранение информации об исключении в отдельный файл###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/error.log ## Имя файла журнала исключений
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ОШИБКА ## Выводить только журналы выше уровня ОШИБКИ!!!
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{гггг-ММ-дд ЧЧ:мм:сс} [ %t:%r ] - [ %p ] %m%n
[Используется в коде]
общественный класс TestLog4j {
public static void main(String[] args) {
PropertyConfigurator.configure( " D:/Code/conf/log4j.properties ");
Регистратор logger = Logger.getLogger(TestLog4j. class);
logger.debug("отладка");
logger.error("ошибка");
}
}
Запустите его и посмотрите, сохраняется ли информация об исключении в отдельном файле error.log.