技术查漏补缺(1)Logback

一、下定义:Logback是一个开源的日志组件

二、Logback的maven

复制代码
<!--这个依赖直接包含了 logback-core 以及 slf4j-api的依赖-->
<dependency>
     <groupId>ch.qos.logback</groupId>
     <artifactId>logback-classic</artifactId>
     <version>1.2.3</version>
</dependency>

三、Logbakc的小常识

我们讲实战,LogBack在springboot中的使用(SpringBootCloud也是一样的)

小常识:SpringBoot会默认加载classpath:logback.xml 或者classpath:logback-spring.xml 或者classpath:logback-spring.groovy等文件作为日志配置文件。

当然我们也可以指定默认加载的日志配置文件

在xml格式是

复制代码
logging
    config: classpath:xxx.xml

然后在properties是这样子的

复制代码
logging.config=classpath:xxx.xml 

三、logback-spring.xml配置说明的配置

基础配置

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
 <!--
    %p:输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
    %r:输出自应用启动到输出该日志讯息所耗费的毫秒数
    %t:输出产生该日志事件的线程名
    %f:输出日志讯息所属的类别的类别名
    %c:输出日志讯息所属的类的全名
    %d:输出日志时间点的日期或时间,指定格式的方式: %d{yyyy-MM-dd HH:mm:ss}
    %l:输出日志事件的发生位置,即输出日志讯息的语句在他所在类别的第几行。
    %m:输出代码中指定的讯息,如log(message)中的message
    %n:输出一个换行符号
-->
    <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%logger{50}包名缩写,%n是换行符 -->
    <property name="log_pattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n"/>
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <!-- 日志存储路径 -->
    <springProperty
            scope="context"
            name="defaultLogDir"
            source="qy.log.history.logDir"
    />

    <!-- 日志备份保留时长 -->
    <springProperty
            scope="context"
            name="logMaxHistory"
            source="qy.log.history.maxHistory"
    />

    <!-- 日志大小 -->
    <springProperty
            scope="context"
            name="logMaxSize"
            source="qy.log.history.logMaxSize"
    />
    <property name="logMaxSize" value="200MB"/>
    <!--&lt;!&ndash;控制台日志, 控制台输出 &ndash;&gt;-->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log_pattern}</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>


    <!--文件日志, 按照每天生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <!--<file>${defaultLogDir:-/qy/qy-doctorservice/logs}/log/docser-main.log</file>-->
        <!--TimeBasedRollingPolicy 基于时间来定义轮转策略 -->
        <!--SizeAndTimeBasedRollingPolicy 基于大小以及时间的轮转策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志文件输出的路径和文件名-->
            <!--该属性定义了轮转时的属性名。它的值应该由文件名加上一个 %d 的占位符。%d 应该包含 java.text.SimpleDateFormat 中规定的日期格式。
            如果省略掉这个日期格式,那么就默认为 yyyy-MM-dd。轮转周期是通过 fileNamePattern 推断出来的。
            注意事项:
            1.如果FileNamePattern中指定多个 %d,只能报留一个%d作为主要的,用于推断轮转周期。其它的 %d 占位符必须通过 'aux' 标记为辅助的。
            2.MaxHistory 用来控制最多保留多少数量的归档文件,将会异步删除旧的文件。
                         保留日志的量 = 轮转周期 * MaxHistory
            3.FileNamePattern中除了 %d 之外还有 %i。这两个占位符都是强制要求的。在当前时间还没有到达周期轮转之前,日志文件达到了 maxFileSize 指定的大小,
              会进行归档,递增索引从 0 开始。
            -->
            <!--轮询周期:天-->
            <!--<FileNamePattern>${defaultLogDir:-/qy/qy-doctorservice/logs}/log/%d{yyyy-MM-dd, aux}/credit.%d.%i.log</FileNamePattern>-->
            <!-- 每天轮转(晚上零点),自动将归档文件压缩成 GZIP 格式,减少日志占用空间-->
            <FileNamePattern>${defaultLogDir:-/qy/qy-doctorservice/logs}/log/%d{yyyy-MM-dd, aux}/credit.%d.%i.zip</FileNamePattern>
            <!--日志文件保留轮询周期个数-->
            <MaxHistory>${logMaxHistory:-15}</MaxHistory>
            <!--单个日志文件最大的大小-->
            <MaxFileSize>${logMaxSize:-100MB}</MaxFileSize>
            <!--这个可选属性用来控制所有归档文件总的大小。当达到这个大小后,旧的归档文件将会被异步的删除。使用这个属性时还需要设置 maxHistory 属性。
            而且,maxHistory 将会被作为第一条件,该属性作为第二条件。-->
            <!--归档文件总的大小-->
            <totalSizeCap>1GB</totalSizeCap>
            <!--cleanHistoryOnStart=true时在 appender 启动的时候,归档文件将会被删除。默认的值为 false-->
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
        <!--<append>:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。-->
        <append>false</append>
        <encoder>
            <pattern>${log_pattern}</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>
    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE"/>
    </root>
</configuration>

效果是:

1.日志文件根据日期创建不同的文件夹,日志的归档单位为一天。

2.每个归档日期结束后自动压缩当天日志文件,并根据日期生成新的日志文件夹和日志文件。

3.单个日志的分割,日志可根据配置的单个日志文件大小进行分割。

这个是黑马头条里面的logBack,这个采用的是debug的启动,按需求配置即可

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>

<configuration>
    <!--定义日志文件的存储地址,使用绝对路径-->
    <property name="LOG_HOME" value="e:/logs"/>

    <!-- Console 输出设置 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>

    <!-- 按照每天生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <fileNamePattern>${LOG_HOME}/leadnews.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 异步输出 -->
    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
        <discardingThreshold>0</discardingThreshold>
        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
        <queueSize>512</queueSize>
        <!-- 添加附加的appender,最多只能添加一个 -->
        <appender-ref ref="FILE"/>
    </appender>


    <logger name="org.apache.ibatis.cache.decorators.LoggingCache" level="DEBUG" additivity="false">
        <appender-ref ref="CONSOLE"/>
    </logger>
    <logger name="org.springframework.boot" level="debug"/>
    <root level="info">
        <!--<appender-ref ref="ASYNC"/>-->
        <appender-ref ref="FILE"/>
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>

日志生成位置在

相关推荐
EumenidesJ22 天前
Java常用日志框架介绍
java·log4j·logback·slf4j
躲在没风的地方1 个月前
logback日志控制服务器日志输出
java·服务器·logback
ta叫我小白1 个月前
Spring Boot 设置滚动日志logback
java·spring boot·spring·logback
代码的余温1 个月前
Spring Boot集成Logback日志全攻略
xml·spring boot·logback
代码的余温1 个月前
Logback.xml配置详解与实战指南
xml·logback
清风92001 个月前
Logback——日志技术(基础)
java·前端·logback
代码的余温1 个月前
MyBatis集成Logback日志全攻略
java·tomcat·mybatis·logback
秋千码途1 个月前
小架构step系列08:logback.xml的配置
xml·java·logback
枣伊吕波1 个月前
第十五节:第六部分:日志技术:logback的核心配置文件详解、日志级别
logback
再见晴天*_*1 个月前
logback 日志不打印
java·服务器·logback