zoukankan      html  css  js  c++  java
  • 项目中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秒扫描一下配置文件的变化; 

  • 相关阅读:
    451. Sort Characters By Frequency
    424. Longest Repeating Character Replacement
    68. Text Justification
    44. Wildcard Matching
    160. Intersection of Two Linked Lists
    24. Swap Nodes in Pairs
    93. 递归实现组合型枚举
    98. 分形之城
    97. 约数之和
    96. 奇怪的汉诺塔
  • 原文地址:https://www.cnblogs.com/super-chao/p/7890137.html
Copyright © 2011-2022 走看看