zoukankan      html  css  js  c++  java
  • 使用log4j输出日志

    今天在倒腾log4j,其实蛮简单的。

    一、首先是下载log4j的jar包。

    二、将下载的jar包添加到web工程的WEB-INF/lib包下

    三、在src/config包下新建log4j.properties,这个是log4j的配置文件,在里面添加如下配置代码

    ###set log level ###
    log4j.rootLogger = DEBUG,Console,D,E
    
    ### CONSOLE ###
    log4j.appender.Console = org.apache.log4j.ConsoleAppender
    log4j.appender.Console.Target = System.out
    log4j.appender.Console.layout = org.apache.log4j.PatternLayout
    log4j.appender.Console.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
    
    ### DEBUG ###
    log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.D.File = ${webapp.root}/WEB-INF/logs/debug.log
    log4j.appender.file.DatePattern=yyyy-MM-dd-HH-mm'.log'
    log4j.appender.D.Append = true
    log4j.appender.D.Threshold = DEBUG 
    log4j.appender.D.layout = org.apache.log4j.PatternLayout
    log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
    
    ### ERROR ###
    log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.E.File = ${webapp.root}/WEB-INF/logs/error.log
    log4j.appender.file.DatePattern=yyyy-MM-dd-HH-mm'.log'
    log4j.appender.E.Append = true
    log4j.appender.E.Threshold = ERROR 
    log4j.appender.E.layout = org.apache.log4j.PatternLayout
    log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

    上面这段配置表示输出level等级在DEBUG之上的信息,并且将信息输出到控制台和对应路径的log文件中。

    其中DEBUG信息输出到${webapp.root}/WEB-INF/logs/debug.log ,ERROR信息输出到${webapp.root}/WEB-INF/logs/error.log。

    这里的${webapp.root}表示一个相对路径,你可以通过System.getProperty("webapp.root") ;进行查看。

    一般为你的tomcat路径webapps项目名。比如我的为:D:DevelopToolsapache-tomcat-8.0.36webappsssm

    四、在web.xml中设置log4j配置文件的路径

    里面添加如下代码

      <context-param>  
            <param-name>webAppRootKey</param-name>    
            <param-value>webapp.root</param-value>    
        </context-param>  
        <!-- 设置log4j配置文件的路径 -->
          <context-param>  
            <param-name>log4jConfigLocation</param-name>  
            <!--  <param-value>classpath*:config/log4j.properties</param-value>  -->
            <param-value>classpath:config/log4j.properties</param-value>  
            <!--  <param-value>WEB-INF/log4j.properties</param-value> -->
        </context-param>  
        <!-- 3000表示 开一条watchdog线程每60秒扫描一下配置文件的变化;这样便于日志存放位置的改变 -->  
        <context-param>    
            <param-name>log4jRefreshInterval</param-name>    
            <param-value>3000</param-value>    
        </context-param>   
        <listener>  
               <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
        </listener>

    五、使用验证

    @Controller
    @RequestMapping("/user")
    public class UserController {
        
        @Autowired
        private UserService userService;
        protected Logger log = Logger.getLogger(UserController.class);
        @RequestMapping("/findAllUser")
        public String findAllUser(HttpServletRequest request){
            List<User> listUser = userService.findAllUser();
            request.setAttribute("listUser",listUser);
            log.debug("服务器启动了,log4j开始工作了");
            log.error("服务器启动了,log4j开始工作了");
            return "/allUser";
        }
    }

    注意事项:

    如果你想将log日志输出到其他路径也可以。

    新建一个类实现ServletContextListener接口。在里面使用System.setProperity方法来设置路径

    public class Log4jListener implements ServletContextListener{
        public static final String log4j_dir_key = "dir";
    
        @Override
        public void contextDestroyed(ServletContextEvent sce) {
            // TODO Auto-generated method stub
            System.getProperties().remove(log4j_dir_key);
        }
    
        @Override
        public void contextInitialized(ServletContextEvent sce) {
            // TODO Auto-generated method stub
            String dir = sce.getServletContext().getRealPath("/logs"); 
            System.setProperty(log4j_dir_key,dir);
        }
    }

    然后在刚才的web.xml中添加listener

    <listener>  
          <listener-class>com.util.Log4jListener</listener-class>
    </listener>

    最后在log4j的配置文件中,将输出路径修改为

    log4j.appender.D.File = ${dir}/WEB-INF/logs/debug.log

    此时你的log文件就会存在你设定的路径/WEB-INF/logs下了。

  • 相关阅读:
    ida动态调试--反反调试
    python读取配置文件
    问题解决:局域网内,为啥别人ping不到我的IP
    完全卸载MySQL
    JDK环境配置
    win10无法运行Vmware,怎么办
    查看ie版本
    公开的免费WebService接口分享,用于做接口练习
    SVN更改地址
    Loadrunner录制步骤及说明
  • 原文地址:https://www.cnblogs.com/cuglkb/p/6734047.html
Copyright © 2011-2022 走看看