zoukankan      html  css  js  c++  java
  • Log4j详细介绍(四)日志记录器Logger

      Log4j配置中有3个重要的概念:日志记录器(Logger),输出地(Appender)以及日志格式化器(Layout)。其中Logger负责记录日志,Appender负责输出到什么地方,Layout负责以什么格式输出,输出那些附加信息(例如时间,类名,方法名,所在行数等)

      Logger就是Java代码中的Logger,例如:

    1 public static Logger log = Logger.getLogger(Log4jTest.class);

         Logger是有名字的,它的名字便是Logger.getLogger()方法参数。如果参数为所在的类,Log4j会去类名为Logger的名称,例如com.log4j.test.Log4jTes

      Logger为单例模式:相同名字的Logger只会有一个实例。如果在构建一个同名的Logger,Log4j会返回先前的Logger实例。

      命名规则:一般都以类名作为Logger的名称。Logger的名字类似于Java中的Package名字,大小写敏感,用点分开具有继承关系例如com.log4j是com.log4j.test的父亲。log4j.properties中通过名称来配置Logger的属性。

      Log4j中有一个跟记录器rootLogger,它是所有Logger的父亲

      Logger的配置

      在log.properties配置中,log4j.logger后面配置的是Logger,log4j.appender后面配置的是 Appender,例如:

      

    1 # 配置Logger为ERROR级别,输出到A1
    2 log4j.logger.com.log4j.test.Log4jTest=DEBUG, A1
    3 
    4 # 配置Appender A1,输出到控制台,使用表达式布局
    5 log4j.appender.A1=org.apache.log4j.ConsoleAppender
    6 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    7 log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%C]-[%p] %m%n

      如某个Logger没有配置,则使用它的父亲配置,知道找到为止。一般情况下,只需配置根记录器rootLogger即可,所有Logger都会沿用rootLogger的配置

      rootLogger配置

      根记录器rootLogger直接使用log4j.rootLogger配置。rootLogger是所有记录器的父亲。任何记录器都可以继承rootLogger的配置代码如下

     1 #配置rootLogger为ERROR级别,输出地位A1
     2 log4j.rootLogger= ERROR, A1
     3 
     4 #配置该logger为DEBUG 级别,输出地则继承rootLogger配置
     5 log4j.logger.com.log4j.test2.Log4jConfigTest=DEBUG 6 
     7 # 配置Appender A1,输出到控制台,使用正则表达式布局
     8 log4j.appender.A1=org.apache.log4j.ConsoleAppender
     9 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    10 #定义输出格式
    11 log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%C]-[%p] %m%n

      如果要对某个Logger进行特殊输出,只需要在配置一下该Logger,覆盖父亲的配置即可。覆盖时,可以配置级别,输出地,也可两者都配置

          类别category配置

      Logger还有个类别(Category)的概念,通过设置类别来设置该类别下所有的Logger:

     1 #配置rootLogger为ERROR级别,输出地位A1
     2 log4j.rootLogger= ERROR, A1
     3 
     4 #作用于类别com.log4j.test下所有的Logger, 输出则继承rootLogger配置
     5 log4j.category.com.log4j.test=DEBUG
     6 
     7 # 配置Appender A1,输出到控制台,使用正则表达式布局
     8 log4j.appender.A1=org.apache.log4j.ConsoleAppender
     9 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    10 #定义输出格式
    11 log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%C]-[%p] %m%n

      catergory类似于Java中的Package,效果跟Logger的名字等价

  • 相关阅读:
    LeetCode Binary Tree Inorder Traversal
    解析看病难看病贵
    [转]微服务概念解析
    OC中几种延时操作的比較
    Android AOP之路三 Android上的注解
    浅析C#中的托付
    图类算法总结
    有关https安全的相关内容介绍
    BZOJ 3684: 大朋友和多叉树 [拉格朗日反演 多项式k次幂 生成函数]
    Codeforces 250 E. The Child and Binary Tree [多项式开根 生成函数]
  • 原文地址:https://www.cnblogs.com/ArtsCrafts/p/log4j4.html
Copyright © 2011-2022 走看看