В этом уроке мы покажем вам, как использовать классический log4j 1.2.x для регистрации сообщения об отладке или ошибке в приложении Java.
1. Каталог проектов
Просмотрите окончательную структуру проекта, стандартный Java-проект в стиле Maven.
2. Получить Log4j
Объявляет следующие зависимости:
log4j log4j 1.2.17
Для пользователей, не являющихся Maven, посетите официальную страницу log4j , загрузите jar и вручную поместите его в путь к библиотеке проекта.
3. Для пользователей, не являющихся Maven, посетите ||официальную страницу log4j||, загрузите jar и вручную поместите его в путь к библиотеке проекта.
Создайте файл log4j.properties
и поместите его в папку ресурсов. Обратитесь к шагу № 1 выше.
- Для автономного приложения Java убедитесь, что файл
log4j.properties
находится подпроектом/классами
каталог - Для веб-приложений Java убедитесь, что файл
log4j.properties
находится под классамиWEB-INF/
каталог
# Root logger option log4j.rootLogger=DEBUG, stdout, file # Redirect log messages to console 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{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n # Redirect log messages to a log file, support file rolling. log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=C:\\log4j-application.log log4j.appender.file.MaxFileSize=5MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
Давай разберем это:
- %d{гггг-ММ-дд и формат времени, см. SimpleDateFormat javadoc.
- приоритет ведения журнала %-5p, например, ОТЛАДКА или ОШИБКА. -5 является необязательным для красивого формата печати.
- %c{1} имя журнала, которое мы задаем с помощью getLogger(), см. руководство по шаблону log4j .
- %L номер строки, откуда поступил запрос на ведение журнала.
- % m%n сообщение для регистрации и разрыва строки.
Примеры сообщений журнала:
2014-07-02 20:52:39 DEBUG className:200 - This is debug message 2014-07-02 20:52:39 DEBUG className:201 - This is debug message2
4. Демонстрация – Как зарегистрировать сообщение?
Чтобы зарегистрировать сообщение, сначала создайте окончательный статический
регистратор и определите имя для регистратора, обычно мы используем полное имя класса пакета.
final static Logger logger = Logger.getLogger(classname.class);
Затем регистрирует сообщения с различными приоритетами, например, отладка, информация, предупреждение, ошибка и фатальный. Обычно вам просто нужно использовать отладку или ошибку.
//logs a debug message if(logger.isDebugEnabled()){ logger.debug("This is debug"); } //logs an error message with parameter logger.error("This is error : " + parameter); //logs an exception thrown from somewhere logger.error("This is error", exception);
4.1 Пример: Регистратор имеет значение отладка приоритет.
log4j.rootLogger=DEBUG, stdout #...
package com.mkyong; import org.apache.log4j.Logger; public class HelloExample{ final static Logger logger = Logger.getLogger(HelloExample.class); public static void main(String[] args) { HelloExample obj = new HelloExample(); obj.runMe("mkyong"); } private void runMe(String parameter){ if(logger.isDebugEnabled()){ logger.debug("This is debug : " + parameter); } if(logger.isInfoEnabled()){ logger.info("This is info : " + parameter); } logger.warn("This is warn : " + parameter); logger.error("This is error : " + parameter); logger.fatal("This is fatal : " + parameter); } }
Выход
2014-07-02 20:52:39 DEBUG HelloExample:19 - This is debug : mkyong 2014-07-02 20:52:39 INFO HelloExample:23 - This is info : mkyong 2014-07-02 20:52:39 WARN HelloExample:26 - This is warn : mkyong 2014-07-02 20:52:39 ERROR HelloExample:27 - This is error : mkyong 2014-07-02 20:52:39 FATAL HelloExample:28 - This is fatal : mkyong
4.2 Пример – Регистратор имеет значение ошибка приоритет.
log4j.rootLogger=error, stdout #...
Запустите пример Hello
еще раз, вы получите следующий вывод
2014-07-02 20:56:02 ERROR HelloExample:27 - This is error : mkyong 2014-07-02 20:56:02 FATAL HelloExample:28 - This is fatal : mkyong
Просмотрите класс приоритета
log4j.
package org.apache.log4j; public class Priority { public final static int OFF_INT = Integer.MAX_VALUE; public final static int FATAL_INT = 50000; public final static int ERROR_INT = 40000; public final static int WARN_INT = 30000; public final static int INFO_INT = 20000; public final static int DEBUG_INT = 10000; //public final static int FINE_INT = DEBUG_INT; public final static int ALL_INT = Integer.MIN_VALUE;
Если приоритет определен в log4j.properties
, будет зарегистрировано только то же или более приоритетное сообщение.
5. Демонстрация – Как зарегистрировать исключение
Пример, показывающий, как использовать log4j для регистрации исключения.
package com.mkyong; import org.apache.log4j.Logger; public class HelloExample2{ final static Logger logger = Logger.getLogger(HelloExample2.class); public static void main(String[] args) { HelloExample2 obj = new HelloExample2(); try{ obj.divide(); }catch(ArithmeticException ex){ logger.error("Sorry, something wrong!", ex); } } private void divide(){ int i = 10 /0; } }
Выход
2014-07-02 21:03:10 ERROR HelloExample2:16 - Sorry, something wrong! java.lang.ArithmeticException: / by zero at com.mkyong.HelloExample2.divide(HelloExample2.java:24) at com.mkyong.HelloExample2.main(HelloExample2.java:14)
Сделано.
Скачать Исходный Код
Рекомендации
- официальная страница log4j 1.2
- выкройка шаблона log4j
- Википедия: log4j
- Пример Spring MVC + log4j
- log4j.примеры свойств
Оригинал: “https://mkyong.com/logging/log4j-hello-world-example/”