В этом руководстве мы покажем вам, как использовать классический log4j 1.2.x для регистрации сообщений об ошибках или ошибок в приложении Java.
1. Каталог проектов
Просмотрите окончательную структуру проекта, стандартный Java-проект в стиле Maven.
Изображение://wp-content/uploads/2014/07/log4j-hello-world.png[log4j-алло-мир, ширина = 426, высота = 411]
2. Получить Log4j
Объявляет следующие зависимости:
pom.xml
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
Если вы не пользователь Maven, посетите log4j официальную страницу , загрузите jar и поместите его в путь к библиотеке проекта вручную.
3. log4j.properties
Создайте файл
log4j.properties
и поместите его в папку ресурсов.
Обратитесь к шагу № 1 выше.
, Для автономного Java-приложения убедитесь, что файл
log4j.properties
в каталоге
project/classes
, Для веб-приложений Java убедитесь, что файл
log4j.properties
в каталоге
WEB-INF/classes
log4j.properties
# 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
-
Примечание ** + Чтобы понять символы в
ConversionPattern
, пожалуйста, обратитесь к этому log4.4 PatternLayout guide .
Давайте разберемся:
, % d \ {гггг-мм-дд чч: мм: сс} = формат даты и времени, см.
SimpleDateFormat JavaDoc.
, % -5p = приоритет ведения журнала, например DEBUG или ERROR. -5 не является обязательным,
для красивого формата печати.
, % c \ {1} = имя журнала, которое мы установили с помощью getLogger (), см.
, % 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, обычно мы используем полное имя класса пакета.
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 Пример: Logger установлен в приоритет debug .
log4j.properties
log4j.rootLogger=DEBUG, stdout #...
HelloExample.java
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 Пример – Logger имеет приоритет error .
log4j.properties
log4j.rootLogger=error, stdout #...
Запустите
HelloExample
снова, вы получите следующий вывод
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
Просмотрите класс
Priority
в log4j.
Priority.java
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 для регистрации исключения.
HelloExample2.java
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)
Готово.
Скачать исходный код
Скачать исходный код - ссылка://wp-content/uploads/2014/07/log4j-hello-world.zip[log4j-hello-world-example.zip](8 КБ)
Рекомендации
макет шаблона], Wikipedia: log4j
, ссылка://spring-mvc/spring-mvc-log4j -gration-example/[Spring MVC
log4j пример], ссылка://протоколирования/log4j-log4j-свойства-примеры/[log4j.properties
Примеры]
ссылка://тег/hello-world/[привет мир]ссылка://тег/log4j/[log4j]