zoukankan      html  css  js  c++  java
  • springboot日志框架学习------slf4j和log4j2

    springboot日志框架学习------slf4j和log4j2

    日志框架的作用,日志框架就是用来记录系统的一些行为的,可以通过日志发现一些问题,在出现问题之后日志是好的一个帮手。

    市面上的日志框架大概有这些:JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j....等等

    SLF4j(Simple Logging Facade for Java) 他是一个抽象的门面,需要实现

    Log4j JUL(java.util.logging) Log4j2 Logback都可以实现它。

    上边选一个门面(抽象层)、下边来选一个实现;
    日志门面: SLF4J;
    日志实现:Logback, Log4j2;
    SpringBoot:底层是Spring框架,Spring框架默认是用JCL;
    SpringBoot选用 SLF4j和logback


    如何将系统中所有的日志都统一到slf4j

    1、将系统中其他日志框架先排除出去;
    2、用中间包来替换原有的日志框架;
    3、我们导入slf4j其他的实现

    springboot日志关系

    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring‐boot‐starter</artifactId>
    </dependency>
    //日志启动器
    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring‐boot‐starter‐logging</artifactId>
    </dependency>
    

    底层的依赖关系

    总结:
    1)、SpringBoot底层也是使用slf4j+logback的方式进行日志记录
    2)、SpringBoot也把其他的日志都替换成了slf4j;

    SpringBoot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉即可;

    日志的使用

    springboot默认已经帮我们配置好了日志,日志级别为trace<debug<info<warn<error

    默认的日志级别为inifo,日志输出只有在当前级别以及更高级别的才输出。

    例如:

    //日志记录器
    Logger logger = LoggerFactory.getLogger(getClass());
    logger.info("这是info日志...");
    
    日志输出格式:
    %d表示日期时间,
    %thread表示线程名,
    %‐5level:级别从左显示5个字符宽度
    %logger{50} 表示logger名字最长50个字符,否则按照句点分割。
    %msg:日志消息,
    %n是换行符
    例如:
    %d{yyyy‐MM‐dd HH:mm:ss.SSS} [%thread] %‐5level %logger{50} ‐ %msg%n
    

    springboot修改日志的默认配置

    logging.level.com.atguigu=trace #修改日志级别
    #logging.path=
    # 不指定路径在当前项目下生成springboot.log日志
    # 可以指定完整的路径;
    #logging.file=G:/springboot.log
    # 在当前磁盘的根路径下创建spring文件夹和里面的log文件夹;使用 spring.log 作为默认文件
    logging.path=/spring/log
    # 在控制台输出的日志的格式
    logging.pattern.console=%d{yyyy‐MM‐dd} [%thread] %‐5level %logger{50} ‐ %msg%n
    # 指定文件中日志输出的格式
    logging.pattern.file=%d{yyyy‐MM‐dd} === [%thread] === %‐5level === %logger{50} ==== %msg%n
    

  • 相关阅读:
    可扩展多线程异步Socket服务器框架EMTASS 2.0
    认识迅雷界面引擎
    C语言 二维数组(指针)动态分配和释放(转)
    二维数组与双重指针(转)
    VC++6 调用teststand api的方法
    [VC6] 小谈如何解决VC6.0 open崩溃的问题(已解决)(转)
    Linux下C与Mysql的混合编程(转)
    VS2010生成安装包制作步骤 (转)
    SAO总结
    JS OOP编程
  • 原文地址:https://www.cnblogs.com/jasonboren/p/11395397.html
Copyright © 2011-2022 走看看