- Статьи и примеры
- | Логирование
- | Про то, как настроить 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