1.Преимущества Log4j
Log4j — это проект Apache с открытым исходным кодом. Используя Log4j, мы можем контролировать место доставки информации журнала; мы также можем контролировать формат вывода каждого журнала; мы можем контролировать уровень каждой информации журнала; Детализация процесса генерации. Самое интересное, что их можно гибко настроить через файл конфигурации, не изменяя код приложения.
Преимущества log4j:
(1) Изменяя файл конфигурации, вы можете выбрать место назначения информационной консоли журнала, файла, компонента графического интерфейса, даже сервера сокетов, устройства записи событий NT, демона системного журнала UNIX и т. д.
(2) Изменяя файл конфигурации, вы можете определить уровень каждого сообщения журнала, чтобы контролировать его вывод. На этапе разработки системы можно распечатать подробную информацию журнала для отслеживания работы системы. После того, как система стабилизируется, вывод журнала можно отключить, тем самым отслеживая работу системы и одновременно уменьшая количество ненужного кода (System.out.println(..). ....)ждать).
(3) Использование log4j требует единого механизма журналирования для всей системы, что способствует планированию системы.
2. Конфигурационный файл
Log4j состоит из трех важных компонентов: приоритета информации журнала, места назначения вывода информации журнала и формата вывода информации журнала. Приоритеты информации журнала от высокого до низкого включают FATAL, ERROR, WARN, INFO, DEBUG, TRACE и ALL, которые используются для указания важности этой информации журнала соответственно. Назначение вывода информации журнала указывает, что журнал будет; выводиться на консоль или в файл, а формат вывода управляет отображением содержимого журнала.
2.1 Приоритет информации журнала
Log4j рекомендует использовать только четыре уровня: приоритеты от высокого к низкому: ОШИБКА, ПРЕДУПРЕЖДЕНИЕ, ИНФОРМАЦИЯ и ОТЛАДКА. С помощью определенных здесь уровней вы можете контролировать включение и выключение соответствующего уровня информации журнала в приложении. Если здесь определен уровень INFO, вся информация журнала ниже уровня INFO в приложении не будет распечатана.
2.2 Использование источников вывода
Выборочное включение или отключение запросов журналирования — это лишь часть функциональности Log4j. Log4j позволяет выводить запросы журналирования в несколько источников вывода. В терминах Log4j источник вывода называется Appender.
Appender включает в себя консоль, файлы, компоненты графического пользовательского интерфейса, удаленные серверы сокетов, JMS, регистраторы событий NT, удаленные демоны системного журнала UNIX (служба удаленного фонового журнала UNIX). Он также может записывать асинхронно. Регистратор может установить более одного приложения. Добавьте приложение к данному регистратору, используя метод addAppender. Для данного средства ведения журнала каждый допустимый запрос журнала пересылается всем приложениям средства ведения журнала и приложениям родительского устройства ведения журнала.
2.2.1 КонсольАппендер
Если используется ConsoleAppender, информация журнала будет записана в консоль. Эффект эквивалентен печати информации непосредственно в System.out.
2.2.2 FileAppender
Используя FileAppender, информация журнала будет записана в указанный файл. Это должна быть более часто используемая ситуация. Соответственно, имя файла вывода журнала должно быть указано в файле конфигурации. В следующей конфигурации указывается имя файла журнала log.txt.
log4j.appender.appendername.File=log.txt Обратите внимание, что имя приложения заменяется псевдонимом Appender в конкретной конфигурации.
Примечание. Проблема с указанным путем к файлу журнала.
2.2.3 DailyRollingAppender
Вы можете использовать FileAppender для вывода информации журнала в файл, но если файл слишком велик, его будет неудобно читать. В настоящее время вы можете использовать DailyRollingAppender. DailyRollingAppender может выводить информацию журнала в файлы, разделенные по дате. Файл конфигурации будет генерировать файл журнала каждый день (время можно установить), и каждый файл журнала записывает только информацию журнала за этот день:
Скопируйте код кода следующим образом:
log4j.appender.appendername=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Aappendername.file=log
log4j.appender.appendername.DatePattern='.'гггг-ММ-дд
log4j.appender.appendername.layout=org.apache.log4j.PatternLayout
log4j.appender.appendername.layout.ConversionPattern= %5r %-5p %c{2} - %m%n
2.2.4 RollingFileAppender
Новый файл создается, когда размер файла достигает указанного размера.
Скопируйте код кода следующим образом:
og4j.appender.appendername=org.apache.log4j.RollingFileAppender
log4j.appender.appendername.File= ../logs/rlog.log
#Контролируем максимальный размер файла журнала
log4j.appender.appendername.MaxFileSize=100 КБ
# Архивировать файлы журналов (здесь один файл резервной копии)
log4j.appender.appendername.MaxBackupIndex=1
log4j.appender.appendername.layout=org.apache.log4j.PatternLayout
log4j.appender.appendername.layout.ConversionPattern=%p %t %c - %m%n
В этом файле конфигурации указывается имя приложения источника выходных данных, которое представляет собой меняющийся файл журнала. Самый большой файл имеет размер 100 КБ. Когда файл журнала достигает максимального размера, Log4J автоматически переименовывает rlog.log в rlog.log.1, затем перестраивает новый файл rlog.log и последовательно выполняет ротацию.
2.2.5 WriterAppender
Отправляйте информацию журнала в любое указанное место в потоковом формате.
2.3 Конфигурация макета
Макет определяет стиль вывода информации журнала.
2.3.1 Стиль макета
Скопируйте код кода следующим образом:
org.apache.log4j.HTMLLayout (макет в формате таблицы HTML),
org.apache.log4j.PatternLayout (можно гибко указывать шаблоны макета),
org.apache.log4j.SimpleLayout (содержит уровень и информационную строку информации журнала),
org.apache.log4j.TTCCLayout (содержит информацию о времени создания журнала, потоке, категории и т. д.)
2.3.2 Формат
Скопируйте код кода следующим образом:
%m выводит сообщение, указанное в коде
Приоритет вывода %p, а именно DEBUG, INFO, WARN, ERROR, FATAL.
%r Выводит количество миллисекунд, прошедших с момента запуска приложения до вывода информации журнала.
%c выводит категорию, к которой он принадлежит, обычно полное имя класса.
%t выводит имя потока, сгенерировавшего событие журнала.
%n выводит символ возврата каретки и перевода строки, который равен «rn» на платформе Windows и «n» на платформе Unix.
%d выводит дату или время момента времени журнала. Формат по умолчанию — ISO8601. Вы также можете указать формат позже, например: %d{гггг МММ дд ЧЧ:мм:сс,ССС}. : 18 октября 2002 г. 22:10:28,921
%l Выводит место, где произошло событие журнала, включая имя категории, поток, в котором оно произошло, и номер строки кода. Пример: Testlog4.main(Test Log4.java:10)
3. Установите уровни вывода журнала для разных приложений.
Этого можно добиться, изменив пороговое значение Appender в конфигурации, как показано в следующем примере:
Конфигурационный файл:
log4j.rootLogger = отладка,A,B,C
#Вывод на консоль
log4j.appender.A = org.apache.log4j.ConsoleAppender
log4j.appender.A.Target = System.out
log4j.appender.A.layout = org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern = %p %t %c - %m%n
# Вывод в файл журнала
log4j.appender.B = org.apache.log4j.DailyRollingFileAppender
log4j.appender.B.File = журналы/log.log
log4j.appender.B.Append = true
log4j.appender.B.Threshold = DEBUG # Вывод журналов выше уровня EBUG
log4j.appender.B.layout = org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern = %p %t %c - %m%n
# Сохраняем информацию об исключении в отдельный файл
log4j.appender.C = org.apache.log4j.DailyRollingFileAppender
log4j.appender.C.File = logs/error.log #Имя файла журнала исключений
log4j.appender.C.Append = true
log4j.appender.C.Threshold = ОШИБКА #Выводить только журналы выше уровня ОШИБКИ
log4j.appender.C.layout = org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern = %p %t %c - %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("ошибка");
}
}