Настройка log4j логирования

Логирование настраивается в файле log4j.properies.

Логгер записывает данные через appender. Аппендер бывает разных типов – для записи логов в файл или консоль, или бд, или другое.

Логирование происходит исходя из настроенного уровня логирования.

Их шесть: trace < debug < info < warn < error < fatal.

По стрелке слева на право сужается количество информации, которая будет логироваться.

  • При например настроенном trace логироваться может вообще всё, то есть все уровни.
  • При, например, error только ошибки, то есть error и fatal уровни.
  • Если настроен уровень info, срабатывать будут только логи уровней info,warn,error,fatal – все выше уровнем.

Также есть layout-ы, они определяют то, КАК будет выводиться информация в лог.

Все эти настройки совершаются в log4j.properties.


Настройка логирования в консоль

Приведем пример настройки логирования в консоль.

Здесь мы настраиваем уровень логирования, аппендер и лейаут.

Файл же этот пусть находиться в той же папке, что и программа, которая будет логировать.

Содержимое конфигурационного файла:

#здесь пишем уровень логирования и используемые в данном конфигурационном файле аппендеры log4j.rootLogger=INFO, consoleAppender #Appender №1 #consoleAppender – логироваться будет в консоль log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender #PatternLayout определяет какие данные будут логироваться и как будут, log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout #например через ConversionPattern с помощью %d задается #формат даты. или %p уровень лога и т.д. То есть в соответствии #с паттерном ниже логироваться данные в консоль будут еще и с указанием даты #логирования информации, уровня логирования данной информации и другое. log4j.appender.consoleAppender.layout.ConversionPattern=%d{yyyy-MM-dd}-%t-%p-%10c:%m%n

Уже был показан метод error для логирования ошибок.

Есть также методы для логирования других уровней:

Метод infoдля логирования какой-либо информации по ходу программы (не ошибок, просто какие-то данные), debugдля логирования во время дебаггинга программы и т.д., название этих методов говорит само за себя.

Пример программы:

import java.util.*; import java.sql.*; import org.apache.log4j.Logger; public class Logging { private static Logger log = Logger.getLogger(Logging.class); public static void main(String[] args) { //с помощью методов debug(), info(), … мы указываем //уровень информации, которая логируется и в них передаем //информацию, которая логируется. log.debug(“This is debug method”); //в properties уровень указан info поэтому //уровень debug log не сработает. //То есть мы можем отключать с помощью настроек //некоторые методы для логирования. //То есть если программист много раз по ходу программы //использовал метод debug для дебагинга программы //и если он закончил дебаг //и ему сейчас больше не нужны //вызовы этого метода в программе //он может не стирать их из программы, а просто //их отключить чтобы они больше ничего не логировали. log.info(“This is info method”); log.error(“This is error method”); } }

Скомпилируем и запустим.

Видим в консоль залогировались только данные из методов info и error по вышеизложенным причинам.

Также видим, что перед данными, которые логировались также указаны дополнительные данные, которые мы настраивали с помощью layout.ConversionPattern.


Настройка логирования в файл

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

Содержимое конфигурационного файла:

#здесь пишем уровень логирования и используемые в данном конфигурационном файле аппендеры log4j.rootLogger=INFO, consoleAppender, fileAppender #Appender №1 #consoleAppender – логироваться будет в консоль log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender #PatternLayout определяет какие данные будут логироваться и как будут, log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout #например через ConversionPattern с помощью %d задается #формат даты. или %p уровень лога и т.д. То есть в соответствии #с паттерном ниже логироваться данные лога будут еще и с указанием даты #логирования информации, уровня логирования данной информации и другое. log4j.appender.consoleAppender.layout.ConversionPattern=%d{YYYY-MM-dd}-%t-%p-%l-10c:%m%n #Appender №2 #FileAppender – лог в файл. RollingFileAppender дает возможность задать макс. #размер файла лога и при достижении этого размера #создаться новый файл лога и так по кругу log4j.appender.fileAppender=org.apache.log4j.RollingFileAppender log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout #также как и в прошлом аппендере log4j.appender.fileAppender.layout.ConversionPattern=%d{yyyy-MM-dd}-%t-%p-%l-10c:%m%n #файл в который будет логироваться log4j.appender.fileAppender.File=demoApplication.log

Пример программы:

import java.util.*; import java.sql.*; import org.apache.log4j.Logger; public class Logging { private static Logger log = Logger.getLogger(Logging.class); public static void main(String[] args) { log.debug(“This is debug method”); log.info(“This is info method”); log.error(“This is error method”); } }

Скомпилируем и запустим.

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


Настройка логирования в html файл

Также можно логировать в html файл, он будет оформлен в формате таблицы. Или можно логировать в xml файл. Логирование происходит, опять же, с помощью fileAppender.

Содержимое конфигурационного файла:

#здесь пишем уровень логирования и используемые в данном конфигурационном файле аппендеры log4j.rootLogger=INFO, consoleAppender, fileAppender #Appender №1 #consoleAppender – логироваться будет в консоль log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender #PatternLayout определяет какие данные будут логироваться и как будут, log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout #например через ConversionPattern с помощью %d задается #формат даты. или %p уровень лога и т.д. То есть в соответствии #с паттерном ниже логироваться данные будут еще и с указанием даты #логирования информации, уровня логирования данной информации и другое. log4j.appender.consoleAppender.layout.ConversionPattern=%d{YYYY-MM-dd}-%t-%p-%10c:%m%n #Appender №3 log4j.appender.fileAppender=org.apache.log4j.FileAppender log4j.appender.fileAppender.File=htmllayout.html #HTMLLayout – можем сохранять логи в виде HTML страницы. #есть еще XMLLayout тоже самое только в виде XML. log4j.appender.fileAppender.layout=org.apache.log4j.HTMLLayout #можно установить заголовок на HTML страницы log4j.appender.HTMLLayout.Title=HTML Layout Example #будет отображаться информация о локации, времени и др. log4j.appender.fileAppender.LocationInfo=true

Пример программы:

import java.util.*; import java.sql.*; import org.apache.log4j.Logger; public class Logging { private static Logger log = Logger.getLogger(Logging.class); public static void main(String[] args) { log.debug(“This is debug method”); log.info(“This is info method”); log.error(“This is error method”); } }

Скомпилируем и запустим.

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

Java Enterprise Edition (EE)

Java EE: стандарт для веб-приложений. Основы работы с сервлетами, их жизненный цикл и настройка в контейнере Tomcat.
Time to read: 19

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

Пошаговое руководство по созданию первого сервлета на Java: от наследования HttpServlet до обработки запросов через doGet и doPost.
Time to read: 14

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

Изучите ключевые методы сервлетов: init, doGet, doPost, service и destroy. Узнайте их назначение и применение в Java EE для обработки HTTP-запросов.
Time to read: 13