• 项目中log4j的使用


    基于ssm项目:

    1.导入log4j、slf4j相关jar包

    commons-logging-1.1.3.jar、log4j-1.2.12.jar、slf4j-api-1.6.6.jar、slf4j-log4j12-1.6.6.jar

    2.设置属性文件log4j.properties放置在/WEB-INF/conf/log4j.properties

    # DEBUG,INFO,WARN,ERROR,FATAL
    LOG_LEVEL=INFO
    
    log4j.rootLogger=${LOG_LEVEL},CONSOLE,FILE
    
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.Encoding=utf-8
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    #log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{8}@(%F:%L):%m%n 
    log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{1}@(%F:%L):%m%n
    
    log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
    #工作空间的catalina下项目中D:workspace.metadata.pluginsorg.eclipse.wst.server.core	mp2wtpwebapps	est4logs
    #log4j.appender.FILE.File=${test2.root}/logs/test4.log
    #工作空间的catalina下temp中D:workspace.metadata.pluginsorg.eclipse.wst.server.core	mp2logs
    log4j.appender.FILE.File=${catalina.base}/logs/test6.log
    log4j.appender.FILE.Encoding=utf-8
    log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    #log4j.appender.FILE.layout=org.apache.log4j.HTMLLayout
    log4j.appender.FILE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{8}@(%F:%L):%m%n 

    3.web.xml中配置log4j监听器,用来加载指定路径下的log4j.properties文件

    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/conf/log4j.properties</param-value>
    </context-param>
    <context-param>
        <param-name>log4jRefreshInterval</param-name>
        <param-value>60000</param-value>
    </context-param>

    4.启动项目,项目加载配置文件的日志就会记录在日志文件中

       日志文件的路径在log4j.properties中配置:log4j.appender.FILE.File=${catalina.base}/logs/test6.log
       也可以建立测试类测试:

    @RequestMapping("/loginAdmin")
        public String login(){
            User user = new User();
            user.setUsername("aa");
            user.setPassword("bb");
            Subject subject = SecurityUtils.getSubject() ;
            UsernamePasswordToken token = new UsernamePasswordToken(user.getUsername(),user.getPassword()) ;
            logger.info("登录成功1");
            logger.info("--info--");
            logger.debug("--debug--");
            logger.error("-error-");
            logger.warn("--warn--");
            System.out.println(System.getProperty("test2.root"));
            System.out.println(System.getProperty("Academic.root"));
            try {
                subject.login(token);
                return "index2" ;
            }catch (Exception e){
                //这里将异常打印关闭是因为如果登录失败的话会自动抛异常
    //            e.printStackTrace();
                
                return "index" ;
            }
        }

    打印日志内容可在输出的日志文件中查看到。

    说明:

    使用spring中的Log4jConfigListener有如如下好处: 
       1. 动态的改变记录级别和策略,不需要重启Web应用,如《Effective Enterprise Java》所说。 
       2. 把log文件定在 /WEB-INF/logs/
           而不需要写绝对路径。 
           因为系统把web目录的路径压入一个叫webapp.root的系统变量。这样写log文件路径时不用写绝对路径了. 
           log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/myfuse.log 
       3. 可以把log4j.properties和其他properties一起放在/WEB-INF/ ,而不是Class-Path。 
       4.log4jRefreshInterval为6000表示开一条watchdog线程每6秒扫描一下配置文件的变化; 

  • 相关阅读:
    GOOGLE域名存在漏洞,可以用来建立钓鱼站点(目前已临时被封闭)
    今天的工作
    2006的最后一天,于2007年的第一天记录
    上班去
    顶你个肺
    勇气!
    东京审判
    远离我家
    8.3不仅仅是forfun
    我又对自己说,要好好写写我的文字了
  • 原文地址:https://www.cnblogs.com/super-chao/p/7890137.html
Copyright © 2020-2023  润新知