1 инструкции по настройке Log4j
1.1 Файл конфигурации
Log4j можно настроить динамически с помощью Java-программы. Очевидным недостатком этого метода является то, что если вам нужно изменить уровень вывода журнала и другую информацию, вам придется изменить Java-файл, а затем перекомпилировать его, что очень затруднительно;
Log4j также можно настроить через файлы конфигурации. В настоящее время он поддерживает два формата файлов конфигурации:
• XML-файл
• файл свойств (рекомендуется)
Ниже приведено полное содержимое файла конфигурации log4j:
Скопируйте код кода следующим образом:
log4j.rootCategory=ИНФО, стандартный вывод
log4j.rootLogger=информация, стандартный вывод
### стандартный вывод ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{АБСОЛЮТНЫЙ} %5p - %m%n
### установить пакет ###
log4j.logger.org.springframework=информация
log4j.logger.org.apache.catalina=информация
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.chb.test=отладка
1.2 Настройка корневого регистратора
Корневой регистратор в основном определяет уровень журнала и место назначения вывода, поддерживаемые log4j. Его синтаксис:
log4j.rootLogger = [уровень], имя_приложения, имя_приложения, …
Среди них уровень — это приоритет ведения журнала, который делится на ВЫКЛ, ФАТАЛЬНАЯ, ОШИБКА, ПРЕДУПРЕЖДЕНИЕ, ИНФОРМАЦИЯ, ОТЛАДКА, ВСЕ или настраиваемые уровни.
Рекомендуется использовать только четыре уровня. Приоритеты от высокого к низкому: ERROR, WARN, INFO и DEBUG.
AppenderName указывает, куда выводятся данные журнала, и одновременно можно указать несколько мест назначения вывода.
1.3 Настройка места назначения вывода Appender
Appender в основном определяет, где выводится информация журнала. Основной синтаксис:
Скопируйте код кода следующим образом:
log4j.appender.appenderName = информация о классе
log4j.appender.appenderName.option1 = значение1
…
log4j.appender.appenderName.optionN = значениеN
Приложения, предоставляемые Log4j, включают следующее:
•org.apache.log4j.ConsoleAppender(консоль),
•org.apache.log4j.FileAppender(файл),
• org.apache.log4j.DailyRollingFileAppender (каждый день генерирует файл журнала),
•org.apache.log4j.RollingFileAppender (генерирует новый файл, когда размер файла достигает указанного размера)
•org.apache.log4j.WriterAppender (отправка информации журнала в потоковом формате в любое указанное место)
Возьмите ConsoleAppender в качестве примера, например:
Скопируйте код кода следующим образом:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
1.4 Настройка формата информации журнала
Layout отвечает за форматирование вывода Appender. Его синтаксис:
Скопируйте код кода следующим образом:
log4j.appender.appenderName.layout = информация о классе
log4j.appender.appenderName.layout.option1 = значение1
…
log4j.appender.appenderName.layout.optionN = значениеN
Среди них макеты, предоставляемые Log4j, включают следующие:
•org.apache.log4j.HTMLLayout (макет в формате таблицы HTML),
• org.apache.log4j.PatternLayout (можно гибко задавать шаблоны макета),
•org.apache.log4j.SimpleLayout (содержит уровень и информационную строку информации журнала)
• org.apache.log4j.TTCCLayout (содержит информацию о времени создания журнала, потоке, категории и т. д.)
1.5 Установка уровня вывода пакета
Вы можете установить уровень вывода журнала для разных пакетов. Синтаксис:
log4j.logger.packageName=уровень
Среди них packageName — это фактическое имя пакета, а level — это уровень журнала, например:
Скопируйте код кода следующим образом:
log4j.logger.org.springframework=информация
log4j.logger.org.apache.catalina=информация
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.chb.test=отладка
2 Log4j в сочетании с J2ee
2.1 Использование пружинной архитектуры
Spring действительно хорош. Он многое сделал для нас. Если система использует среду Spring, интегрировать log4j в основном можно в три этапа:
2.1.1 Определение файла конфигурации log4j
Скопируйте код кода следующим образом:
log4j.rootCategory=ИНФО, стандартный вывод
log4j.rootLogger=информация, стандартный вывод
### стандартный вывод ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{АБСОЛЮТНЫЙ} %5p - %m%n
### войти в файл ###
log4j.logger.org.springframework=информация
log4j.logger.org.apache.catalina=информация
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.chb.test=отладка
2.1.2 Определение слушателей
Прослушиватель должен быть определен в файле web.xml, который в основном включает в себя: определение каталога файла конфигурации log4j и прослушивателя log4j следующим образом:
Скопируйте код кода следующим образом:
<?xml version="1.0"coding="UTF-8"?>
<версия веб-приложения="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!--Расположение файла конфигурации Log4j, загруженного Spring -->
<контекстный параметр>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</контекст-параметр>
<контекстный параметр>
<param-name>contextConfigLocation</param-name>
<значение-параметра>
/WEB-INF/classes/applicationContext*.xml
</парам-значение>
</контекст-параметр>
<!--Загрузчик конфигурации Spring log4j -->
<слушатель>
<класс-слушателя>
org.springframework.web.util.Log4jConfigListener
</слушатель-класс>
</слушатель>
<слушатель>
<класс-слушателя>
org.springframework.web.context.ContextLoaderListener
</слушатель-класс>
</слушатель>
<сервлет>
<servlet-name>InitiaServlet</servlet-name>
<servlet-class>chb.test.web.InitiaServlet</servlet-class>
<загрузка при запуске>1</загрузка при запуске>
</сервлет>
<список-приветственных-файлов>
<приветственный-файл>index.jsp</приветственный-файл>
</приветственный-список-файлов>
</веб-приложение>
2.1.3 Тестовый класс
Скопируйте код кода следующим образом:
пакет com.dheaven.mip.web;
импортировать javax.servlet.ServletException;
импортировать javax.servlet.http.HttpServlet;
импортировать org.apache.log4j.Logger;
публичный класс InitiaServlet расширяет HttpServlet {
защищенный журнал Logger = Logger.getLogger(InitiaServlet.class);
частный статический окончательный длинный сериалVersionUID = 8550329576989690578L;
/**
* Конструктор объекта.
*/
общественный InitiaServlet () {
супер();
}
/**
* Уничтожение сервлета <br>.
*/
общественный недействительный уничтожить () {
супер.уничтожить();
}
/**
* Инициализация сервлета <br>.
*
* @throws ServletException в случае возникновения ошибки
*/
public void init() выдает ServletException {
log.debug("Сервер запустился и log4j начал работать");
}
}
2.2 Не использовать пружинную архитектуру
Если система не использует Spring, давайте возьмем в качестве примера сервлет. Это очень просто. Вы можете просто следовать инструкциям и только вставить код, никакой чепухи.
2.2.1 Определение файла конфигурации log4j
Поместите его в каталог WEB-INF веб-проекта со следующим содержимым:
Скопируйте код кода следующим образом:
log4j.rootCategory=ИНФО, стандартный вывод
log4j.rootLogger=информация, стандартный вывод
### стандартный вывод ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{АБСОЛЮТНЫЙ} %5p - %m%n
### установить пакет ###
log4j.logger.org.apache.catalina=информация
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.com.dheaven=отладка
2.2.2 Создание класса инициализации log4j
Скопируйте код кода следующим образом:
пакет com.dheaven.mip.web;
импортировать javax.servlet.ServletException;
импортировать javax.servlet.http.HttpServlet;
импортировать org.apache.log4j.PropertyConfigurator;
публичный класс InitLog4j расширяет HttpServlet {
частный статический окончательный длинный серийныйVersionUID = 1L;
public void init() выдает ServletException {
Префикс строки = getServletContext().getRealPath("/");
prefix = prefix.replace("//", "/");
Строковый файл = getInitParameter("log4j-init-file");
// если файл log4j-init не установлен, то нет смысла пытаться
если (файл != ноль) {
PropertyConfigurator.configure(префикс + файл);
}
}
}
2.2.3 Определить класс инициализации в Web.xml
Скопируйте код кода следующим образом:
<сервлет>
<имя-сервлета>log4j-init</имя-сервлета>
<servlet-class>chb.test.web.InitLog4j</servlet-class>
<инициализирующий-параметр>
<param-name>log4j-init-файл</param-name>
<param-value>WEB-INF/log4j.properties</param-value>
</инит-парам>
<загрузка при запуске>1</загрузка при запуске>
</сервлет>
2.2.4 Тестовый класс
Скопируйте код кода следующим образом:
пакет chb.test.web;
импортировать javax.servlet.ServletException;
импортировать javax.servlet.http.HttpServlet;
импортировать org.apache.log4j.Logger;
публичный класс InitiaServlet расширяет HttpServlet {
защищенный журнал Logger = Logger.getLogger(InitiaServlet.class);
частный статический окончательный длинный сериалVersionUID = 8550329576989690578L;
/**
* Конструктор объекта.
*/
общественный InitiaServlet () {
супер();
}
/**
* Уничтожение сервлета <br>.
*/
общественный недействительный уничтожить () {
супер.уничтожить();
}
/**
* Инициализация сервлета <br>.
*
* @throws ServletException в случае возникновения ошибки
*/
public void init() выдает ServletException {
log.debug("Сервер запустился и log4j начал работать");
}
}