- Статьи и примеры
- | Логирование
- | Про то, как настроить log4j, myapplication.properties и запускающий ant скрип в сервере приложений orion.
Про то, как настроить Log4j, myapplication.properties и запускающий Ant скрип в сервере приложений Orion.
Постановка задачи
Имеется сервер приложений Orion и готовое приложение, которое использует в качестве отладочного модуля Log4j. В этой статье мы покажем один из способов настройки Log4j при развертывании приложения на сервере Orion. В результате наших манипуляций приложение будет писать лог туда, куда надо нам, с заданным уровнем логирования и параметрами, из пользовательского файла log4j.properties.
Описание настройки log4j.properties нашего приложения
Наше приложение использует пакет Log4j в качестве модуля отладки. Не будем много писать о пользе сохранения отладочной информации. В качестве готового решения для этого рекомендуем Log4j. Если Вы еще не определились для себя с таковым — прекрасный шанс познакомиться. Подробная документация по Log4j есть на сайте проекта. Мы всего лишь расскажем что и как использовали в своем проекте. Представляем Log4l.properties файл с комментариями:
# Максимальный уровень логируемого события для всего приложения:
log4j.rootCategory=FATAL
#Консольный аппендер по умолчанию.
#Его имя как видим ConsoleLog.
#Для того чтобы его подключить к другому аппендеру
#надо просто добавить его имя через запятую
#в конце строки log4j.category.*
#как это сделано ниже в ApplicationWorker
log4j.appender.ConsoleLog=org.apache.log4j.ConsoleAppender
log4j.appender.ConsoleLog.layout=org.apache.log4j.PatternLayout
log4j.appender.ConsoleLog.layout.ConversionPattern=%d %-5p - %m%n
log4j.appender.ConsoleLog.Threshold=DEBUG
#Аппендер для файла ApplicationWorker
#ApplicationWorkerLog - название аппендера,
#ConsoleLog - означает лишь то, что этот аппендер кроме своего
#лог файла будет писать все в консоль
log4j.category.my.ejb.bean.ApplicationWorker = ApplicationWorkerLog, ConsoleLog
log4j.appender. ApplicationWorkerLog = org.apache.log4j.DailyRollingFileAppender
log4j.appender. ApplicationWorkerLog.DatePattern=.yyyy-MM-dd
#Путь к файлу в системе.
log4j.appender. ApplicationWorkerLog.File = ./log/ConsoleMergerWeb.log
log4j.appender. ApplicationWorkerLog.layout = org.apache.log4j.PatternLayout
#Настройка префикса к логу. Делайте как удобнее.
log4j.appender. ApplicationWorkerLog.layout.ConversionPattern = %-5p [%d{dd-MM-yyyy HH:mm:ss.SSS}] %C{1}[%t]: %m%n
# Уровень логирования.
#Мы отлаживаем приложение — стоит Dubug.
# При постановке на боевое дежурство —
#не забудьте переключить на ERROR или отключить(самоуверенно).
log4j.appender. ApplicationWorkerLog.Threshold=DEBUG
# При такой записи, при старте
#приложения лог будет очищаться автоматически
# Иногда это полезно, иногда очень вредно.
log4j.appender. ApplicationWorkerLog.Append=false
#Аппендер для файла ApplicationWorker
#Тут мы не прописываем класс, а вызовем аппендер по имени:
#Logger applicationServletMyLog =
#Logger.getLogger("ApplicationServletMyLog")
log4j.category.ApplicationServletMyLog = TRACE,ApplicationServletLog
log4j.appender.ApplicationServletLog = org.apache.log4j.DailyRollingFileAppender
log4j.appender.ApplicationServletLog.DatePattern=.yyyy-MM-dd
log4j.appender.ApplicationServletLog.File = ./log/ ApplicationServlet.log
log4j.appender.ApplicationServletLog.layout = org.apache.log4j.PatternLayout
# расшифровка паттерна
# %-5p — приоритет логирования
# [%t] — имя процесса вызвавшего событие
# %C{1} — имя класса вызвавшего событие
# %m%n — Само сообщение плюс платформозависимый перенос строки
# Формат даты [%d{dd-MM-yyyy HH:mm:ss.SSS}]
log4j.appender.ApplicationServletLog.layout.ConversionPattern=%-5p [%d{dd-MM-yyyy HH:mm:ss.SSS}] %C{1}[%t]: %m%n
log4j.appender.ApplicationServletLog.Threshold=DEBUG
log4j.appender.ApplicationServletLog.Append=false
Мы подключаем логгер в проект очень просто.
public static Logger logger = Logger.getLogger(ApplicationWorker.class);
//Либо
public static Logger logger = Logger.getLogger("ApplicationServletMyLog");
После создания логгера мы можем использовать его для отладки кода нашего класса. Позволим себе напомнить основные методы:
logger.trace("trace message");
logger.debug("debug message");
logger.info("info message");
logger.warn("warn message");
logger.error("error message");
logger.fatal("fatal message");
Где какие использовать решайте сами. Мы стараемся разграничить отладочную информацию как минимум на две категории. Ту что нужна для отладки — по максимуму выводить все опасные моменты, и ту что будет сохраняться при работе приложения — необходимй минимум, для определения места неисправности чтобы лог файлы не разрастались слишком быстро.
Настройка редактора Eclipse
Мы писали код приложения в редакторе Eclipse. Для того чтобы мы могли использовать наш log4j.properties всего лишь пропишем его в аргументы виртуальной машины. На скриншоте видно как это сделать.

Если Вы используете другой редактор — скорее в нем так же существуют подобные настройки. Как использовать это в консоли — догадайтесь сами.
-Dorg.apache.commons.logging.Log = org.apache.commons.logging.impl.Log4JCategoryLog -Dlog4j.configuration = file:с:/MyApplication/my.log4j.properties
Итак мы написали код приложения и желаем развернуть его на сервере. У нас есть сервлет и JMS bean. Мы создали ear архив(о том как это сделать при помощи несложного ant скрипта можно прочитать здесь) Положили архив в папку orion/application, положили наш log4j.properties в папку orion/config и желаем запустить приложение чтобы насладиться чтением логов с сообщениями об успешном выполнении работы. Для этого создадим скрипт запуска сервера. Укажем ему где брать файл настройки Log4j.
@echo off set PATH=C:\jdk5 c: cd c:\orion echo Starting the Orion... "%PATH%/bin/java" -Xms120M -Xmx1024M -Dlog4j.configuration = file:c:/orion/config/my.log4j.properties -classpath d:/o -jar orion.jar
Запускаем Orion. Всю отладочную информацию найдем в папке orion/log/. Если Вам необходимо изменить уровень логирования или внести любое другое изменение в файл настройки log4j, не забудьте перезапустить Orion.
Страница:
-
1

