Топ-100Настройка log4j логирования - CodOrbits
LogoCodOrbits

Раздел: Логирование

В этом разделе вы узнаете, как настраивать логирование в Java с помощью Log4j: уровни логов, конфигурация, вывод сообщений и многое другое.

Все разделы
Иконка Логирование

Настройка 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
мин.

Similar Articles Icon
Divider

Создание первого сервлета

14
мин.

Similar Articles Icon
Divider

Методы сервлета

13
мин.

Similar Articles Icon