zoukankan      html  css  js  c++  java
  • 后端——框架——日志框架——logback——《官网》阅读笔记——第一章节(Hello World示例)

      第一章节搭建了logback日志框架的环境,演示了Hello World的示例,并详细分析了示例。

      搭建日志框架的过程非常简单,只需要在项目的classpath上添加以下三个jar包,logback-core,logback-classic,slf4j-api-xx.jar。其中logback-classic依赖core和slf4j,如果使用maven构建,只需要添加classic依赖即可。

    1、HelloWorld示例

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import ch.qos.logback.classic.LoggerContext;
    import ch.qos.logback.core.util.StatusPrinter;
    
    /**
     * 
     * @File Name: HelloWorld.java
     * @Description: 学习logback的第一个程序,要运行此代码需要将logback-classic,logback-core,slf4j-api-xx.jar引入到classpath。
     * @version 1.0
     * @since JDK 1.8
     */
    public class HelloWorld {
    	public static void main(String[] args) {
    		// 工厂模式,通过getLogger方法获取Logger对象,它的全名为org.slf4j.Logger
    		// 工厂方法的参数可以是类全名,也可以是其对应的Class类
    		Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    		// 定义了一条logging statement,它的level为debug,它的message为"Hello World"
    		logger.debug("Hello World");
    		// 获取日志框架的上下文,它等同于applicationContext在spring框架中的地位
    		LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
    		// 打印出日志框架运行的详细日志,也可以理解为分析LoggerContext对象的生命周期。
    		StatusPrinter.print(context);
    	}
    } 

      上述代码的运行结果如下:

    17:04:25.470 [main] DEBUG learn.logback.chapter1.HelloWorld - Hello World
    17:04:25,441 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
    17:04:25,441 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
    17:04:25,441 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
    17:04:25,442 |-INFO in ch.qos.logback.classic.BasicConfigurator@31221be2 - Setting up default configuration.
    

      Logback在运行时总共经历了4步:

    1. 它首先去查找classpath路径下的logback-test.xml配置文件。
    2. 查找失败之后,继续查找logback.groovy配置文件。
    3. 如果还失败,继续查找logback.xml配置文件。
    4. 如果上述三个文件都没有找到,使用默认的配置。最后的日志也显示它是BasicConfigurator类

    2、 BasicConfigurator(默认配置)

      这个类继承ContextAwareBase类,并实现Configurator接口,只有一个默认的构造器和configure方法,代码如下:

    public void configure(LoggerContext lc) {
    	// 没有实际意义,打印日志
    	addInfo("Setting up default configuration.");
    	
    	// 添加默认的配置的Appender,ConsoleAppender,并设置默认的Encoder
    	ConsoleAppender<ILoggingEvent> ca = new ConsoleAppender<ILoggingEvent>();
    	ca.setContext(lc);
    	ca.setName("console");
    	LayoutWrappingEncoder<ILoggingEvent> encoder = new LayoutWrappingEncoder<ILoggingEvent>();
    	encoder.setContext(lc);
    
    	// same as
    	// PatternLayout layout = new PatternLayout();
    	// layout.setPattern("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n");
    	TTLLLayout layout = new TTLLLayout();
    
    	layout.setContext(lc);
    	layout.start();
    	encoder.setLayout(layout);
    
    	ca.setEncoder(encoder);
    	ca.start();
    	// 添加默认的根Logger,之后会学习到logger的逻辑结构为树形结构,树的跟为Logger.ROOT_LOGGER_NAME,这个常量的值为root,所有logger从根logger中继承Appender
    	Logger rootLogger = lc.getLogger(Logger.ROOT_LOGGER_NAME);
    	rootLogger.addAppender(ca);
    }
    

      这段代码做了两件事:

    1. 设置默认的Appender为ConsoleAppender,由于Appender类依赖Layout,所以依赖的layout对象也被创建。
    2. 创建了root的logger对象,并设置Logger对象的Appender为consoleAppender。

      至此本篇内容结束,原著的链接是:http://logback.qos.ch/manual/introduction.html

  • 相关阅读:
    NPOI json转Excel DataTable转Excel ,Excel转DataTable
    sqlhelper;
    C# DataSet数据导入Excel 修正版- .net FrameWork 4.0以上
    asp.net core 教程(七)-异常处理、静态文件
    asp.net core 教程(六)-中间件
    asp.net core 教程(五)-配置
    jQuery_3_过滤选择器
    jQuery_2_常规选择器-高级选择器2
    jQuery_2_常规选择器-高级选择器
    jQuery_2_常规选择器-进阶选择器
  • 原文地址:https://www.cnblogs.com/rain144576/p/12304535.html
Copyright © 2011-2022 走看看