Бесплатный курс по Java: от основ до продвинутого уровня
Настройка 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 файл, который автоматически создается в папке где находиться файл программы.