• 框架——日志框架——logback——搭建环境


    1、搭建环境

      搭建日志框架非常简单,需要引入logback-classic和slf4j.api依赖。logback.version替换为对应的版本即可

    <dependency>
    	<groupId>org.slf4j</groupId>
    	<artifactId>slf4j-api</artifactId>
    	<version>1.7.25</version>
    </dependency>
    <dependency>
    	<groupId>ch.qos.logback</groupId>
    	<artifactId>logback-classic</artifactId>
    	<version>${logback.version}</version>
    </dependency>
    

    2、HelloWorld示例 

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import ch.qos.logback.classic.LoggerContext;
    import ch.qos.logback.core.util.StatusPrinter;
    
    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步:

    第一步,它首先去查找classpath路径下的logback-test.xml配置文件。

    第二步,查找失败之后,继续查找logback.groovy配置文件。

    第三步,如果还失败,继续查找logback.xml配置文件。

    第四步,如果上述三个文件都没有找到,使用默认的配置。最后的日志显示它是BasicConfigurator类。

    3、BasicConfigurator

     它继承ContextAwareBase类,并实现Configurator接口,只有一个默认的构造器和configure方法。

    // 没有实际意义,打印日志
    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);
  • 相关阅读:
    windows笔记进程的句柄
    windows笔记创建线程的函数CreateThread
    c#实现从其他网站抓取imei码信息,手工输入验证码
    Linux下自动修改用户密码的方法(直接通过命令而不是在终端输入密码)
    Redis学习笔记List数据类型
    在Linux(centos)上安装PHP的mongodb扩展
    CI(codeigniter)如何防止sql注入
    MongoDB增加用户认证: 增加用户、删除用户、修改用户密码、读写权限、只读权限
    Sublime Text编辑器如何显示顶部的菜单栏
    C#图片选择器
  • 原文地址:https://www.cnblogs.com/rain144576/p/16749325.html
Copyright © 2020-2023  润新知