天天看点

日志框架初探日志框架初探

日志框架初探

1. 常见的日志框架

  • JCL: JDK自带的日志记录器!不需要引入第三方框架!可以直接使用!

    ​ java.util.logger

  • log4j: 早期比较流行的日志框架!
  • slf4j: 日志门面技术! 类似JDBC,一种日志记录的标准! 代码中采用了此标准记录日志后!

​ 只需要在项目中,替换不同实现了次标准的日志框架,即可,无需重构代码!

  • log4j2: 目前最牛的日志框架!
  • logback: 是log4j的升级版!对log4j性能好!

2. Log4j

2.1 配置文件的名称

必须有配置文件!

public class LogManager {

  /**
   * @deprecated This variable is for internal use only. It will
   * become package protected in future versions.
   * */
  static public final String DEFAULT_CONFIGURATION_FILE = "log4j.properties";
  
  static final String DEFAULT_XML_CONFIGURATION_FILE = "log4j.xml";  
           
Log4j的配置我必须要么为 log4j.properties,要么是 log4j.xml

2.2 配置文件怎么写

三大组件:

Logger: 日志记录器! 日志记录的最高领导! 需要调用Logger对象进行日志的记录!

# 为所有类创建一个rootLogger,log4j.rootLogger=INFO, stdout
# log4j.rootLogger=日志记录级别, appender1,appender2...
	TRACE,DEBUG,INFO,WARN,ERROR
log4j.rootLogger=INFO, stdout

#为指定的类创建logger,按照指定的方法来记录日志
log4j.logger.在哪个类上记录日志的全类名=日志记录级别, appender1,appender2...
           

Appender: 决定记录的日志记录到哪里?如何去记录?

# log4j.appender固定的前缀
log4j.appender.自定义名称= appender类的全类名,必须是 org.apache.log4j.Appender类型

# 是指定的Appender类中的 setXxx()中的Xxx  OGNL表达式
log4j.appender.自定义名称.Xxx
           

Layout: 记录的日志的样式

2.3 示例

#logger  log4j.rootLogger是固定的,代表为当前应用程序的所有类都采取以下日志记录
log4j.rootLogger=INFO, stdout

#appender 名称叫stdout
log4j.appender.a=org.apache.log4j.ConsoleAppender
# setTarget
log4j.appender.a.target=System.err
# ConsoleAppender.setLayout
log4j.appender.a.layout=org.apache.log4j.PatternLayout
#org.apache.log4j.PatternLayout.setConversionPattern
log4j.appender.a.layout.ConversionPattern=%d %p [%c] - %m%n

#appender 名称叫 logfile
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
           

配置文件中有些东西是固定的!固定编写的参考

public class PropertyConfigurator implements Configurator {

  /**
     Used internally to keep track of configured appenders.
   */
  protected Hashtable registry = new Hashtable(11);  
  private LoggerRepository repository;
  protected LoggerFactory loggerFactory = new DefaultCategoryFactory();

  static final String      CATEGORY_PREFIX = "log4j.category.";
  static final String      LOGGER_PREFIX   = "log4j.logger.";
  static final String       FACTORY_PREFIX = "log4j.factory";
  static final String    ADDITIVITY_PREFIX = "log4j.additivity.";
  static final String ROOT_CATEGORY_PREFIX = "log4j.rootCategory";
  static final String ROOT_LOGGER_PREFIX   = "log4j.rootLogger";
  static final String      APPENDER_PREFIX = "log4j.appender.";
  static final String      RENDERER_PREFIX = "log4j.renderer.";
  static final String      THRESHOLD_PREFIX = "log4j.threshold";
  private static final String      THROWABLE_RENDERER_PREFIX = "log4j.throwableRenderer";
  private static final String LOGGER_REF	= "logger-ref";
  private static final String ROOT_REF		= "root-ref";
  private static final String APPENDER_REF_TAG 	= "appender-ref";