Настройка log4j логирования
Last updated: 9 мая 2025 г.Логирование настраивается в файле log4j.properies
.
Логгер записывает данные через appender
. Аппендер бывает разных типов – для записи логов в файл или консоль, или бд, или другое.
Логирование происходит исходя из настроенного уровня логирования.
Их шесть: trace < debug < info < warn < error < fatal.
По стрелке слева на право сужается количество информации, которая будет логироваться.
- При например настроенном
trace
логироваться может вообще всё, то есть все уровни. - При, например,
error
только ошибки, то есть error и fatal уровни. - Если настроен уровень
info
, срабатывать будут только логи уровней info,warn,error,fatal – все выше уровнем.
Также есть layout-ы
, они определяют то, КАК будет выводиться информация в лог.
Все эти настройки совершаются в log4j.properties
.
Настройка логирования в консоль
Приведем пример настройки логирования в консоль.
Здесь мы настраиваем уровень логирования, аппендер и лейаут.
Файл же этот пусть находиться в той же папке, что и программа, которая будет логировать.
Содержимое конфигурационного файла:
1#здесь пишем уровень логирования и используемые в данном конфигурационном файле аппендеры
2log4j.rootLogger=INFO, consoleAppender
3
4#Appender №1
5
6#consoleAppender – логироваться будет в консоль
7log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
8#PatternLayout определяет какие данные будут логироваться и как будут,
9log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout
10#например через ConversionPattern с помощью %d задается
11#формат даты. или %p уровень лога и т.д. То есть в соответствии
12#с паттерном ниже логироваться данные в консоль будут еще и с указанием даты
13#логирования информации, уровня логирования данной информации и другое.
14log4j.appender.consoleAppender.layout.ConversionPattern=%d{yyyy-MM-dd}-%t-%p-%10c:%m%n
Уже был показан метод error
для логирования ошибок.
Есть также методы для логирования других уровней:
Метод info
– для логирования какой-либо информации по ходу программы (не ошибок, просто какие-то данные), debug
– для логирования во время дебаггинга программы и т.д., название этих методов говорит само за себя.
Пример программы:
1import java.util.*;
2import java.sql.*;
3import org.apache.log4j.Logger;
4
5public class Logging {
6 private static Logger log = Logger.getLogger(Logging.class);
7
8 public static void main(String[] args) {
9 //с помощью методов debug(), info(), … мы указываем
10 //уровень информации, которая логируется и в них передаем
11 //информацию, которая логируется.
12 log.debug("This is debug method");
13 //в properties уровень указан info поэтому
14 //уровень debug log не сработает.
15 //То есть мы можем отключать с помощью настроек
16 //некоторые методы для логирования.
17 //То есть если программист много раз по ходу программы
18 //использовал метод debug для дебагинга программы
19 //и если он закончил дебаг
20 //и ему сейчас больше не нужны
21 //вызовы этого метода в программе
22 //он может не стирать их из программы, а просто
23 //их отключить чтобы они больше ничего не логировали.
24 log.info("This is info method");
25 log.error("This is error method");
26 }
27}
Скомпилируем и запустим.

Видим в консоль залогировались только данные из методов info
и error
по вышеизложенным причинам.
Также видим, что перед данными, которые логировались также указаны дополнительные данные, которые мы настраивали с помощью layout.ConversionPattern
.
Настройка логирования в файл
Давайте сделаем так, чтобы данные логировались не только в консоль, а еще и в файл. Для этого будем использовать другой аппендер.
Содержимое конфигурационного файла:
1#здесь пишем уровень логирования и используемые в данном конфигурационном файле аппендеры
2log4j.rootLogger=INFO, consoleAppender, fileAppender
3
4#Appender №1
5
6#consoleAppender – логироваться будет в консоль
7log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
8#PatternLayout определяет какие данные будут логироваться и как будут,
9log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout
10#например через ConversionPattern с помощью %d задается
11#формат даты. или %p уровень лога и т.д. То есть в соответствии
12#с паттерном ниже логироваться данные лога будут еще и с указанием даты
13#логирования информации, уровня логирования данной информации и другое.
14log4j.appender.consoleAppender.layout.ConversionPattern=%d{YYYY-MM-dd}-%t-%p-%l-10c:%m%n
15
16#Appender №2
17
18#FileAppender – лог в файл. RollingFileAppender дает возможность задать макс.
19#размер файла лога и при достижении этого размера
20#создаться новый файл лога и так по кругу
21log4j.appender.fileAppender=org.apache.log4j.RollingFileAppender
22log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
23#также как и в прошлом аппендере
24log4j.appender.fileAppender.layout.ConversionPattern=%d{yyyy-MM-dd}-%t-%p-%l-10c:%m%n
25#файл в который будет логироваться
26log4j.appender.fileAppender.File=demoApplication.log
Пример программы:
1import java.util.*;
2import java.sql.*;
3import org.apache.log4j.Logger;
4
5public class Logging {
6 private static Logger log = Logger.getLogger(Logging.class);
7
8 public static void main(String[] args) {
9 log.debug("This is debug method");
10 log.info("This is info method");
11 log.error("This is error method");
12 }
13}
Скомпилируем и запустим.

В этом случае данные залогировались теперь не только в консоль, а и в файл, который автоматически создается в папке где находиться файл программы.

Настройка логирования в html файл
Также можно логировать в html файл, он будет оформлен в формате таблицы. Или можно логировать в xml файл. Логирование происходит, опять же, с помощью fileAppender
.
Содержимое конфигурационного файла:
1#здесь пишем уровень логирования и используемые в данном конфигурационном файле аппендеры
2log4j.rootLogger=INFO, consoleAppender, fileAppender
3
4#Appender №1
5
6#consoleAppender – логироваться будет в консоль
7log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
8#PatternLayout определяет какие данные будут логироваться и как будут,
9log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout
10#например через ConversionPattern с помощью %d задается
11#формат даты. или %p уровень лога и т.д. То есть в соответствии
12#с паттерном ниже логироваться данные будут еще и с указанием даты
13#логирования информации, уровня логирования данной информации и другое.
14log4j.appender.consoleAppender.layout.ConversionPattern=%d{YYYY-MM-dd}-%t-%p-%10c:%m%n
15
16#Appender №3
17
18log4j.appender.fileAppender=org.apache.log4j.FileAppender
19log4j.appender.fileAppender.File=htmllayout.html
20#HTMLLayout – можем сохранять логи в виде HTML страницы.
21#есть еще XMLLayout тоже самое только в виде XML.
22log4j.appender.fileAppender.layout=org.apache.log4j.HTMLLayout
23#можно установить заголовок на HTML страницы
24log4j.appender.HTMLLayout.Title=HTML Layout Example
25#будет отображаться информация о локации, времени и др.
26log4j.appender.fileAppender.LocationInfo=true
Пример программы:
1import java.util.*;
2import java.sql.*;
3import org.apache.log4j.Logger;
4
5public class Logging {
6 private static Logger log = Logger.getLogger(Logging.class);
7
8 public static void main(String[] args) {
9 log.debug("This is debug method");
10 log.info("This is info method");
11 log.error("This is error method");
12 }
13}
Скомпилируем и запустим.

В этом случае данные залогировались теперь не только в консоль, а и в html файл, который автоматически создается в папке где находиться файл программы.

Следующие уроки
Java Enterprise Edition (EE)
19
мин.
Создание первого сервлета
14
мин.
Методы сервлета
13
мин.