Как настроить логирование с помощью Log4j?
Для логирования ошибок web-приложения с помощью Log4j вам необходимо установить в папку /WEB-INF/lib своего web-приложения необходимый jar-архив, скачав его либо непосредственно с сайта проекта Log4j, либо взяв jar-архив с нашего сайта.
Обратите внимание на то, что для того чтобы библиотека, находящаяся в добавленом в папку /WEB-INF/lib jar-архиве, стала действительно доступной web-приложению, web-приложение нуждается в перезапуске!
Перезапуск приложения можно осуществить изменив дату модификации файла web.xml (любое изменение этого файла приводит к автоматической перезагрузке web-приложения).
Пользователи тарифа «Стандартный» также могут воспользоваться панелью управления, а пользователи тарифа «Большой» — стандартной панелью управления приложениями Tomcat (Tomcat Manager).
Затем создайте или возьмите готовый файл настроек для log4j и разместите его в какой-нибудь папке на сервере (рекомендуем использовать папку /WEB-INF своего приложения для размещения файла настроек log4j).
Ниже приводится пример простейшего конфигурационного файла, который будет называться log4j.properties и будет размещен в папке /WEB-INF приложения:
log4j.logger.simple=DEBUG, test
log4j.appender.test=org.apache.log4j.FileAppender
log4j.appender.test.File=/home/web/аккаунт/home/домен/logs/test.log
log4j.appender.test.layout=org.apache.log4j.SimpleLayout
При осуществлении логирования в файл обратите внимание на путь к файлу. Для пользователей тарифа «Стандартный» полный путь к log-директории сайта выглядит следующим образом: /home/web/аккаунт/home/домен/logs/, а для пользователей тарифа «Большой», использующих выделенный сервер Tomcat, путь папке для log-файлов будет выглядеть так: /home/sites/домен/logs (точный путь к директории для размещения логфайлов лучше уточнить у службы технической поддержки)
Для того, чтобы библиотека log4j использовала созданый вами конфигурационный файл, необходимо воспользоваться классом org.apache.log4j.ProperyConfigurator, и с помощью статического метода configure("путь к конфигурационному файлу") задать путь к созданному конфигурационному файлу.
Так как это действие желательно выполнить в момент запуска web-приложения, создадим обработчик событий приложения, выполняющий соответветствующие действия при запуске web-приложения:
import javax.servlet.*;
import java.io.File;
import org.apache.log4j.PropertyConfigurator;
public class Log4jInit implements ServletContextListener {
public void contextInitialized(ServletContextEvent event) {
String homeDir=event.getServletContext().getRealPath("/");
File propertiesFile=new File(homeDir,"WEB-INF/log4j.properties");
PropertyConfigurator.configure(propertiesFile.toString());
}
public void contextDestroyed(ServletContextEvent event) {}
}
В файле web.xml приложения подключим описаный выше обработчик событий:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app
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" version="2.4">
<listener>
<listener-class>Log4jInit</listener-class>
</listener>
...
</web-app>
Теперь вы получили возможность использовать логирование с помощью log4j в своих сервлетах и jsp-страницах.
Ниже приводится пример сервлета использующего логирование с помощью log4j:
import java.io.*;
import javax.servlet.http.*;
import org.apache.log4j.Logger;
public class TestLogServlet extends HttpServlet {
private static Logger logger=Logger.getLogger("simple");
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException{
logger.info("log message from TestLogServlet");
response.setContentType("text/html; charset=windows-1251");
PrintWriter out=response.getWriter();
out.print("<html><body>");
out.print("Log4j test servlet");
out.print("</body></html>");
}
}
JSP-страница, использующая log4j, могла бы выглядеть следующим образом:
<%@ page import="org.apache.log4j.Logger" %>
<% Logger logger=Logger.getLogger("simple"); %>
<html>
<body>
<%
logger.info("log message from TestLog JSP-page");
%>
Log4j test JSP-page
</body>
</html>
Полезные ссылки:
Log4j Project
Любые материалы с данного сайта не могут быть использованы без разрешения владельцев ресурса.
|