zoukankan      html  css  js  c++  java
  • log4j设置,以及中文乱码,通过过滤器输出指定级别的日志,或者指定级别范围的日志

    配置文件为默认名字log4j.properties时,放在某个模块下的resources下即可,即使有多个模块的情况下,任意一个模块的resources下有这个默认名字的文件log4j.properties即可。否则需要配置指定。

    比如放在WEB-INF目录下:在web.xml里增加配置,注意该 Log4jConfigListener需要放在spring的Listener之前。这中设置方式可以不用使用默认名字

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

    log存入文件时,文件路径必须是绝对路径。

    ### 设置###
    #log4j.rootLogger = debug,stdout,D,E
    log4j.rootLogger = FILE,D,E
    
    ### 输出信息到控制抬 ###
    #log4j.appender.stdout = org.apache.log4j.ConsoleAppender
    #log4j.appender.stdout.Target = System.out
    #log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
    #log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
    
    ### 输出DEBUG 级别以上的日志到=logs/log.log ###
    log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.D.File = /home/admin/appData/dqc/log/debug.log
    log4j.appender.D.Append = true
    # 解决中文乱码
    log4j.appender.D.Encoding=UTF-8 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 级别以上的日志到=logs/error.log ### log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File = /home/admin/appData/dqc/logs/error.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

    在实际的项目开发中,很可能遇到所引用的包用Log4j来记录日志,比如Hibernate。那么在这里你可以很容易的控制这个包如何记录日志。比如在上面的配置文件中加一行:

    log4j.logger.org.hibernate=fatal

    那么所有org.hibernate包下面的类就只会显示很少的信息,因为fatal的级别最高啊。

    输出指定包的方法直接log4j.logger.包名。你可以通过log4j.rootLogger=OFF来屏蔽其他输出。以下配置屏蔽SSH框架的日志输出:

    • log4j.logger.org.springframework=OFF  
    • log4j.logger.org.apache.struts2=OFF  
    • log4j.logger.com.opensymphony.xwork2=OFF  
    • log4j.logger.com.ibatis=OFF  
    • log4j.logger.org.hibernate=OFF 

    通过过滤器输出指定级别的日志,或者指定级别范围的日志:http://wendal.net/219.html

    #配置Filter
    #定义id为F1的拦截器,只接受INFO到ERROR
    log4j.appender.File2.filter.F1=org.apache.log4j.varia.LevelRangeFilter
    log4j.appender.File2.filter.F1.LevelMin=INFO
    log4j.appender.File2.filter.F1.LevelMax=ERROR
    #定义id为F2的拦截器,不接受WARN
    log4j.appender.File2.filter.F2=org.apache.log4j.varia.LevelMatchFilter
    log4j.appender.File2.filter.F2.levelToMatch=WARN
    log4j.appender.File2.filter.F2.acceptOnMatch=false
    #可以继续定义你需要的拦截器F3/F4.....

    参考:

    https://my.oschina.net/dodojava/blog/29881

    https://blog.csdn.net/tanglinfeng/article/details/3874314

    http://wiki.jikexueyuan.com/project/log4j/configuration.html

    https://www.jianshu.com/p/c6c543e4975e

    http://wendal.net/219.html

  • 相关阅读:
    [改善Java代码]养成良好习惯,显式声明UID
    [改善Java代码]警惕自增的陷阱
    [改善Java代码]覆写变长方法也循规蹈矩
    [改善Java代码]别让null值和空值威胁到变长方法
    [改善Java代码]避免带有变长参数的方法重载
    [改善Java代码]三元操作符的类型务必一致
    关于Windows下mysql忘记root密码的解决方法
    关于同步VSS服务器上的代码发生Eclipse里面的项目全部不见了
    关于关闭Eclipse的控制台自动跳出
    关于Windows下如何查看端口占用和杀掉进程
  • 原文地址:https://www.cnblogs.com/shengulong/p/9955847.html
Copyright © 2011-2022 走看看