zoukankan      html  css  js  c++  java
  • springboot 整合logback(有全套的日志配置文件)

    logback介绍:基于Log4j基础上大量改良,不能单独使用,推荐配合日志框架SLF4J来使用,可以和springboot很好的整合,也是springboot默认推荐的。

    1.在resources 目录下 创建 logback-spring.xml(推荐使用这个名字)

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration scan="true" scanPeriod="60 seconds" debug="false">
    <contextName>logback</contextName>
    <property name="log.path" value="D:\JAVA_LOGS\transferservice_Logs\" />
    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
    <level>debug</level>
    </filter>
    <encoder>
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
    <charset>utf-8</charset>
    </encoder>
    </appender>

    <!--输出到debug-->
    <appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>app_log/log/logback-debug-%d{yyyy-MM-dd}.log</fileNamePattern>
    </rollingPolicy>
    <append>true</append>
    <encoder>
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
    <charset>utf-8</charset>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印DEBUG日志 -->
    <level>DEBUG</level>
    <onMatch>ACCEPT</onMatch>
    <onMismatch>DENY</onMismatch>
    </filter>
    </appender>
    <!--输出到info-->
    <appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>app_log/log/logback-info-%d{yyyy-MM-dd}.log</fileNamePattern>
    </rollingPolicy>
    <append>true</append>
    <encoder>
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
    <charset>utf-8</charset>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印INFO日志 -->
    <level>INFO</level>
    <onMatch>ACCEPT</onMatch>
    <onMismatch>DENY</onMismatch>
    </filter>
    </appender>

    <!--输出到error-->
    <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>app_log/log/logback-error-%d{yyyy-MM-dd}.log</fileNamePattern>
    </rollingPolicy>
    <append>true</append>
    <encoder>
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
    <charset>utf-8</charset>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印ERROR日志 -->
    <level>ERROR</level>
    <onMatch>ACCEPT</onMatch>
    <onMismatch>DENY</onMismatch>
    </filter>
    </appender>

    <!--输出到warn-->
    <appender name="warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>app_log/log/logback-warn-%d{yyyy-MM-dd}.log</fileNamePattern>
    </rollingPolicy>
    <append>true</append>
    <encoder>
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
    <charset>utf-8</charset>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印WARN日志 -->
    <level>WARN</level>
    <onMatch>ACCEPT</onMatch>
    <onMismatch>DENY</onMismatch>
    </filter>
    </appender>
    <!--用户统计-->
    <appender name="dataApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>app_log/log/logback-data-%d{yyyy-MM-dd}.log</fileNamePattern>
    </rollingPolicy>
    <append>true</append>
    <encoder>
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
    <charset>utf-8</charset>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印INFO日志 -->
    <level>INFO</level>
    <onMatch>ACCEPT</onMatch>
    <onMismatch>DENY</onMismatch>
    </filter>
    </appender>
        <!--用于统计数据 比如某个方法执行了多少次-->
    <logger name="dataLogger">
    <level value="INFO" />
    <appender-ref ref="dataApp" />
    </logger>

    <!--分别设置对应的日志输出节点 -->
    <root level="info">
    <appender-ref ref="console" />
    <appender-ref ref="debug" />
    <appender-ref ref="info" />
    <appender-ref ref="error" />
    <appender-ref ref="warn" />
    </root>
    </configuration>

    2.在需要打日志的地方,类下面加上。
    private Logger logger = LoggerFactory.getLogger(this.getClass());
    //用于统计使用,一般项目小项目不用可忽略
    private Logger dataLogger = LoggerFactory.getLogger("dataLogger");
    在方法上里加:
    //这个数据会保存到统计信息的日志文件中去。
    dataLogger.info("module=video_order`api=save`user_id={}`video_id={}",videoOrderDto.getUserId(),videoOrderDto.getVideoId());
    //正常的日志记录
    logger.info("module=video_order`api=save`user_id={}`video_id={}",videoOrderDto.getUserId(),videoOrderDto.getVideoId());

    对于:logback-spring.xml 中的配置说明=》https://blog.csdn.net/haidage/article/details/6794540
  • 相关阅读:
    内核模式之事件
    用户模式之临界区
    _stdcall与_cdecl区别
    列出系统所有进程
    一道多线程的题
    进程间通信三:父进程传参数与子进程返回值
    进程间通信二:管道技术之命名管道
    进程间通信二:管道技术之匿名管道
    进程间通信二:管道技术之输入输出重定向
    补充实验1:dhcp服务器分配网关-路由器的静态路由优先级
  • 原文地址:https://www.cnblogs.com/xiaowangbangzhu/p/10374139.html
Copyright © 2011-2022 走看看