zoukankan      html  css  js  c++  java
  • java lombok logback 配置日志打印

    meven

    <dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
         <version>1.16.22</version>
    </dependency>

    resources/logback.xml 文件配置

    复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    <!-- 项目名称 -->
    <property name="projectname" value="testapollo" />
    <!-- 日志存放路径 -->
    <property name="log.path" value="/app/${projectname}}/logs" />
    <!-- 日志输出格式 -->
    <property name="log.pattern" value="%d{yyy-MM-dd HH:mm:ss.SSS} [%X{X-B3-TraceId:-},%X{X-B3-SpanId:-}] [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />

    <!-- 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
    <pattern>${log.pattern}</pattern>
    </encoder>
    </appender>

    <!-- 系统日志输出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${log.path}/${projectname}-info.log</file>
    <!-- 循环政策:基于时间创建日志文件 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <!-- 日志文件名格式 -->
    <fileNamePattern>${log.path}/${projectname}-info.%d{yyyy-MM-dd}.log</fileNamePattern>
    <!-- 日志最大的历史 60天 -->
    <maxHistory>60</maxHistory>
    </rollingPolicy>
    <encoder>
    <pattern>${log.pattern}</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
    <!-- 过滤的级别 -->
    <level>INFO</level>
    <!-- 匹配时的操作:接收(记录) -->
    <onMatch>ACCEPT</onMatch>
    <!-- 不匹配时的操作:拒绝(不记录) -->
    <onMismatch>DENY</onMismatch>
    </filter>
    </appender>

    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${log.path}/${projectname}-error.log</file>
    <!-- 循环政策:基于时间创建日志文件 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <!-- 日志文件名格式 -->
    <fileNamePattern>${log.path}/${projectname}-error.%d{yyyy-MM-dd}.log</fileNamePattern>
    <!-- 日志最大的历史 60天 -->
    <maxHistory>60</maxHistory>
    </rollingPolicy>
    <encoder>
    <pattern>${log.pattern}</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
    <!-- 过滤的级别 -->
    <level>ERROR</level>
    <!-- 匹配时的操作:接收(记录) -->
    <onMatch>ACCEPT</onMatch>
    <!-- 不匹配时的操作:拒绝(不记录) -->
    <onMismatch>DENY</onMismatch>
    </filter>
    </appender>


    <!-- 系统模块日志级别控制 -->
    <logger name="com.loop" level="info" />
    <!-- Spring日志级别控制 -->
    <logger name="org.springframework" level="warn" />

    <root level="info">
    <appender-ref ref="console" />
    </root>

    <!--系统操作日志-->
    <root level="info">
    <appender-ref ref="file_info" />
    <appender-ref ref="file_error" />
    </root>

    </configuration>
    复制代码

    在类上加上注解 @Slf4j

    在类中直接打印对应级别的日志

    log.info();                   //对比老版

    log.error();

    log.debug();           //对比老版

    总结:

     在老版中的info和debug要输出;
              

     if(logger.isDebugEnabled()){
    
                  logger.debug("xxxxxxxxx");
    
            }

    Logback是log4j框架的作者开发的新一代日志框架,它效率更高、能够适应诸多的运行环境,同时天然支持SLF4J。

    默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。在运行应用程序和其他例子时,你应该已经看到很多INFO级别的日志了。

      在生产环境:禁止使用DEBUG日志,且有选择地输出INFO日志

    默认的几个级别: debug < info < warn < error < fatal  

     

    1)级别之间是包含的关系,意思是如果你设置日志级别是trace,则大于等于这个级别的日志都会输出。(这里可理解为纱网,日志级别越高,纱网的网孔越小,级别越低网孔越大

    2)基本上默认的级别没多大区别,就是一个默认的设定。你可以通过它的API自己定义级别。你也可以随意调用这些方法,不过你要在配置文件里面好好处理了,否则就起不到日志的作用了,而且也不易读,相当于一个规范,你要完全定义一套也可以,不用没多大必要。

    3)这不同的级别的含义大家都很容易理解,这里就简单介绍一下:

    debug: 调试么,我一般就只用这个作为最低级别,trace压根不用。是在没办法就用eclipse或者idea的debug功能就好了么。

    info: 输出一下你感兴趣的或者重要的信息,这个用的最多了。

    warn: 有些信息不是错误信息,但是也要给程序员的一些提示,类似于eclipse中代码的验证不是有error 和warn(不算错误但是也请注意,比如以下depressed的方法)。

    error: 错误信息。用的也比较多。

    fatal: 级别比较高了。重大错误,这种级别你可以直接停止程序了,是不应该出现的错误么!不用那么紧张,其实就是一个程度的问题。

     

    添加日志依赖

    假如maven依赖中添加了spring-boot-starter-logging:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
    </dependency>复制代码

    那么,我们的Spring Boot应用将自动使用logback作为应用日志框架,Spring Boot启动的时候,由org.springframework.boot.logging.Logging-Application-Listener根据情况初始化并使用。

    但是呢,实际开发中我们不需要直接添加该依赖,你会发现spring-boot-starter其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 logback。

    参考:https://www.cnblogs.com/super-admin/p/10077129.html

  • 相关阅读:
    C#的访问修饰符
    C#的数据类型
    iOS--小结系列八(继续)
    ios--小结系列八 控制器管理
    ios--小结系列八 程序启动原理
    ios--小结系列七 通知机制
    ios--小结系列六继续-UITableViewCell
    ios--小结系列六
    ios--小结系列五
    ios--小结系列四
  • 原文地址:https://www.cnblogs.com/leeego-123/p/12664935.html
Copyright © 2011-2022 走看看