Как настроить путь к выходному файлу log4j в web.xml и log4j.properties?

Я разработал веб-приложение, в котором я могу зарегистрировать сотрудника.

My web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

  <display-name>Employee Registration</display-name>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
  <servlet-name>sapient</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
  <servlet-name>sapient</servlet-name>
  <url-pattern>*.htm</url-pattern>
  </servlet-mapping>

</web-app>

Теперь, когда я нажимаю кнопку Register на своей html-странице. Он переходит в класс контроллера, где я написал код для ведения журнала,

@org.springframework.stereotype.Controller
public class RegController  {
    private static final Logger LOGGER = Logger
            .getLogger(RegController.class.getName());


@RequestMapping(value = "/register.htm", method = RequestMethod.GET)
public ModelAndView handleRequest(HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    LOGGER.debug("ENTERING the contoller class");
    ModelAndView mav = new ModelAndView("register");
    LOGGER.debug("exiting the contoller class");
    return mav;

}

}

Я создал пакет с именем resource и создал файл log4j.properties в

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\loging.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

Но мои журналы не создаются на диске C:.

Нужно ли мне что-то настраивать в web.xml? Я уже включил файл log4j.jar.


person Thinker    schedule 31.10.2012    source источник
comment
перейдите по этой ссылке mkyong.com/spring-mvc/spring- mvc-log4j-интеграция-пример   -  person Swarne27    schedule 31.10.2012


Ответы (4)


Вам нужно включить-

    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/resource/log4j.properties</param-value>
    </context-param>

     <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

в вашем web.xml. тогда он будет работать нормально.

person GARIMA KILLEDAR    schedule 31.10.2012
comment
и в /WEB-INF/resource/ добавить файл log4j.properties с этим кодом # Root logger option log4j.rootLogger=DEBUG, file # Redirect log messages to a log file log4j.appender.file=org.apache.log4j.RollingFileAppender #outputs to Tomcat home log4j.appender.file.File=${catalina.home}/logs/myapp.log log4j.appender.file.MaxFileSize=5MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n - person BERGUIGA Mohamed Amine; 14.10.2014
comment
Работает как шарм. Спасибо - person Abhiroop Sarkar; 05.10.2015

Ваш вопрос не имеет ничего общего с Spring MVC. Это просто проблема конфигурации Log4J. (Пожалуйста, отредактируйте свой вопрос)

Вы правильно настроили регистратор? (например, чтобы разрешить уровень отладки и установить приложение file в регистратор)

Иметь что-то подобное в своем конфиге (просто на память синтаксис припоминаю, исправьте сами, если что не так)

log4j.rootLogger.level=INFO, file
log4j.logger.your.package.RegController=DEBUG

что-то подобное.

Кроме того, убедитесь, что у вас нет других log4j.properties или log4j.xml в пути к классам. Log4J, вероятно, загрузит их вместо ваших, что и вызвало проблему.

person Adrian Shum    schedule 31.10.2012
comment
что-то не по теме: я настоятельно рекомендую OP принять SLF4J. Вы по-прежнему можете использовать Log4J в качестве серверной части для ведения журнала, но это упрощает настройку, и вы можете изменить свою серверную часть для ведения журнала в будущем. - person Adrian Shum; 01.11.2012

Включите следующий файл log4j.properties в папку ресурсов.

log4j.rootCategory=INFO,S,rollingFile

log4j.appender.S =org.apache.log4j.ConsoleAppender
log4j.appender.S.layout =org.apache.log4j.PatternLayout
log4j.appender.S.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n

log4j.appender.rollingFile = org.apache.log4j.DailyRollingFileAppender

#provide path to your location where you want logs created. For now its logs folder of   tomcat.
log4j.appender.rollingFile.File = ${catalina.home}/logs/loging.log
log4j.appender.rollingFile.Append = true
log4j.appender.rollingFile.MaxFileSize=2000KB 
log4j.appender.rollingFile.MaxBackupIndex=9 

log4j.appender.rollingFile.Threshold = ALL

log4j.appender.rollingFile.DatePattern = '.'yyy-MM-dd
log4j.appender.rollingFile.layout = org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n

Замените свой код на этот. Однозначно будет работать нормально.

person Jeevan Patil    schedule 04.11.2012

в свой web.xml добавьте этот код

   <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/resource/log4j.properties</param-value>
    </context-param>

     <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

и в /WEB-INF/resource/ добавить файл log4j.properties с этим кодом

 # Root logger option 
   log4j.rootLogger=DEBUG, file # Redirect log messages to a log file
   log4j.appender.file=org.apache.log4j.RollingFileAppender #outputs to
   Tomcat home log4j.appender.file.File=${catalina.home}/logs/myapp.log
   log4j.appender.file.MaxFileSize=5MB
   log4j.appender.file.MaxBackupIndex=10
   log4j.appender.file.layout=org.apache.log4j.PatternLayout
   log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}
   %-5p %c{1}:%L - %m%n

и в свой класс добавьте этот код

private static final Logger logger = Logger.getLogger(NameOfYourrClass.class);

и внутри вашей функции добавьте этот код

logger.debug("This is Error message", new Exception("Testing"));
person BERGUIGA Mohamed Amine    schedule 14.10.2014