蠢哭了 设置了ServletContextListener但是没有debug到

5 篇文章 0 订阅

代码:

/**
 * zoneland.net Inc.
 * Copyright (c) 2002-2012 All Rights Reserved.
 */
package net.zoneland.uum.client.log;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import net.zoneland.uum.client.common.ConfigHelper;
import org.springframework.security.access.method.P;


/**
 * @author gag
 * @version $Id: AppConfigListener.java, v 0.1 2012-5-10 下午1:22:07 gag Exp $
 */
public class AppConfigListener implements ServletContextListener {

    public static final String LOG_HOME_KEY = "log4j.home";

    /**
     * @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
     */

    public void contextInitialized(ServletContextEvent sce) {
        String loghome = ConfigHelper.getInstance().getStringProperty(LOG_HOME_KEY);
        //加载日志输出路径
        System.setProperty(LOG_HOME_KEY, loghome);
    }

    /**
     * @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent)
     */
    public void contextDestroyed(ServletContextEvent sce) {
        System.getProperties().remove(LOG_HOME_KEY);
    }

}

 

 

web.xml

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

   <display-name>uum_oracle_client</display-name>
   <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/classes/spring*.xml</param-value>
   </context-param>
    <!-- 日志文件输出-->
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/classes/log4j.xml</param-value>
    </context-param>
   
    <listener>
        <listener-class>net.zoneland.uum.client.log.AppConfigListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>



    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>
</web-app>

 

配置文件读取工具:

package net.zoneland.uum.client.common;

import java.util.Properties;

import org.apache.commons.lang.math.NumberUtils;
import net.zoneland.uum.client.common.FileUtil;

public class ConfigHelper {

    private static final ConfigHelper instance         = new ConfigHelper();

    private final Properties          configProperties = FileUtil.loadPropFile("config.properties");

    private ConfigHelper() {
    }

    public static ConfigHelper getInstance() {
        return instance;
    }
    
    public Properties getConfigProerties(){
        return configProperties;
    }

    public String getStringProperty(String key) {
        String value = "";
        if (configProperties.containsKey(key)) {
            value = configProperties.getProperty(key);
        }
        return value;
    }

    public int getNumberProperty(String key) {
        int value = 0;
        String sValue = getStringProperty(key);
        if (NumberUtils.isNumber(sValue)) {
            value = Integer.parseInt(sValue);
        }
        return value;
    }
}

配置文件:

 

内容

#log
#log4j.home=/home/zoneland/logs/osm_client
log4j.home=./logs/osm_client

日志设置:

log4j.xml

<?xml version="1.0" encoding="GBK" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="false" xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="DEFAULT-APPENDER"
        class="net.zoneland.uum.client.log.DailyRollingFileAppender">
        <param name="file" value="${log4j.home}/common-default.log" />
        <param name="append" value="true" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d - %c  %-5p - %m%n" />
        </layout>
    </appender>
    
   <appender name="BIZ-APPENDER"
        class="net.zoneland.uum.client.log.DailyRollingFileAppender">
        <param name="file" value="${log4j.home}/common-biz.log" />
        <param name="append" value="true" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d - %c  %-5p - %m%n" />
        </layout>
    </appender>
   
   <appender name="ERROR-APPENDER"
        class="net.zoneland.uum.client.log.DailyRollingFileAppender">
        <param name="file" value="${log4j.home}/common-error.log" />
        <param name="append" value="true" />
        <param name="threshold" value="error" />
        <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d - %c  %-5p - %m%n"/>
        </layout>
    </appender>
    
    <!-- Console Log Output-->
    <appender name="STDOUT-APPENDER" class="org.apache.log4j.ConsoleAppender">
        <param name="target" value="System.out" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d - %c  %-5p - %m%n"/>
        </layout>
    </appender>

    <appender name="STDERR-APPENDER" class="org.apache.log4j.ConsoleAppender">
        <param name="target" value="System.err" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d - %c  %-5p - %m%n" />
        </layout>
    </appender>
    
    <logger name="STDOUT" additivity="true">
        <level value="info"/>
        <appender-ref ref="STDOUT-APPENDER"/>
    </logger>

    <logger name="STDERR" additivity="false">
        <level value="info"/>
        <appender-ref ref="STDERR-APPENDER"/>
    </logger>
    
    <!-- Framework Log Output-->
    <logger name="org.apache" additivity="false">
        <level value="WARN"/>
        <appender-ref ref="DEFAULT-APPENDER"/>
        <appender-ref ref="ERROR-APPENDER"/>
    </logger>

    <logger name="org.hibernate" additivity="false">
        <level value="WARN"/>
        <appender-ref ref="DEFAULT-APPENDER"/>
        <appender-ref ref="ERROR-APPENDER"/>
    </logger>

    <logger name="java.sql" additivity="false">
        <level value="INFO"/>
        <appender-ref ref="DEFAULT-APPENDER"/>
        <appender-ref ref="ERROR-APPENDER"/>
    </logger>
    
    <logger name="org.springframework" additivity="false">
        <level value="INFO"/>
        <appender-ref ref="DEFAULT-APPENDER"/>
        <appender-ref ref="ERROR-APPENDER"/>
    </logger>
    
    <!-- System Main service  Log Output-->
    <logger name="net.zoneland.uum.client" additivity="false">
        <level value="INFO"/>
        <appender-ref ref="BIZ-APPENDER"/>
        <appender-ref ref="ERROR-APPENDER"/>
    </logger>
    
    <root>
        <level value="INFO"/>
        <appender-ref ref="DEFAULT-APPENDER"/>
        <appender-ref ref="ERROR-APPENDER"/>
    </root>
   
   
</log4j:configuration>

 

问题:日志的路径没有生效,始终在根目录产生日志文件。

原因:

没有用tomcat容器的方式启动程序

 

学习要点:监听容器

在 Servlet API 中有一个 ServletContextListener 接口,它能够监听 ServletContext 对象的生命周期,实际上就是监听 Web 应用的生命周期。

当Servlet 容器启动或终止Web 应用时,会触发ServletContextEvent 事件,该事件由ServletContextListener 来处理。在 ServletContextListener 接口中定义了处理ServletContextEvent 事件的两个方法。

如果你有多个ServletContextListener,其中一些是在部署描述符中声明的和其他带注释的人,然后在 web.xml 中定义的侦听器将获得优先权。

https://www.cnblogs.com/jmuccx/p/7690944.html

根据类名的排序来执行。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值