logback配置文件笔记

 按天输出日志文件,当天的日志在固定文件名输出,备份文件才按配置文件名保存;

异步打印日志

分环境输出日志,阿里云日志服务

<?xml version="1.0" encoding="UTF-8" ?>
<!-- scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
	debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <contextName>logback</contextName>

    <property name="logBasePath" value="/data"/>
    <!-- 应用名称 -->
    <springProperty scope="context" name="applicationName" source="spring.application.name"/>
    <!-- 应用环境 -->
    <springProperty scope="context" name="profilesActive" source="spring.profiles.active"/>

    <!--
    c{length}、lo{length}、logger{length}: 输出日志的logger名,可有一个整形参数,功能是缩短logger名,设置为0表示只输入logger最右边点符号之后的字符串。
    C{length}、class {length}: 输出执行记录请求的调用者的全限定名。参数与上面的一样。尽量避免使用,除非执行速度不造成任何问题。
    contextName、cn: 输出上下文名称。
    d{pattern}、date{pattern}: 输出日志的打印日志,模式语法与java.text.SimpleDateFormat 兼容。
        %d / %date / %date{ISO8601} / %date{yyyy-MM-dd HH:mm:ss,SSS}: 2021-09-07 10:00:00,233
    F/file: 输出执行记录请求的java源文件名。尽量避免使用,除非执行速度不造成任何问题。
    caller{depth}、caller{depth, evaluator-1, ... evaluator-n}: 输出生成日志的调用者的位置信息,整数选项表示输出信息深度。
    L/line: 输出执行日志请求的行号。尽量避免使用,除非执行速度不造成任何问题。
    m / msg / message: 输出应用程序提供的信息。
    M/method: 输出执行日志请求的方法名。尽量避免使用,除非执行速度不造成任何问题。
    n: 输出平台先关的分行符“\n”或者“\r\n”。
    p / le / level: 输出日志级别。
    r / relative: 输出从程序启动到创建日志记录的时间,单位是毫秒。
    t / thread: 输出产生日志的线程名。
    replace(p){r, t}: p为日志内容,r是正则表达式,将p中符合r的内容替换为t。

    格式修饰符: 与转换符共同使用,可选的格式修饰符位于“%”和转换符之间。
    https://www.cnblogs.com/chrischennx/p/6781574.html
    左对齐修饰符: 符号是减号“-”,接着是可选的最小宽度修饰符,用十进制数表示。
    如果字符小于最小宽度,则左填充或右填充,默认是左填充(即右对齐),填充符为空格。如果字符大于最小宽度,字符永远不会被截断。
    最大宽度修饰符: 符号是点号"."后面加十进制数。如果字符大于最大宽度,则从前面截断。点符号“.”后面加减号“-”在加数字,表示从尾部截断。
        Format modifier	Logger name	            Result
        [%20.20logger]	main.Name	            [ main.Name]
        [%-20.20logger]	main.Name	            [main.Name ]
        [%10.10logger]	main.foo.foo.bar.Name	[o.bar.Name]
        [%10.-10logger]	main.foo.foo.bar.Name	[main.foo.f]

    %X用于输出和当前线程相关联的NDC(嵌套诊断环境),在代码中给org.slf4j.MDC添加key/value即可增加新值
        %X 输出所有值
        %X{testKey}	输出testKey所对应的value,且无默认值
        %X{testKey:-} 输出testKey所对应的value,默认为空
        %X{testKey:-aaa} 输出testKey所对应的value,默认为aaa
————————————————
版权声明:本文为CSDN博主「snail_bi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/snail_bi/article/details/103496697
    -->
    <property name="pattern" value="%d %-5level [%thread] %logger{0}: [%X{trace:-}] %msg%n"/>

    <!-- 控制台输出 -->
    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>${pattern}</pattern>
        </layout>
    </appender>

    <!-- 按天输出日志文件 -->
    <appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- file 当天的日志打印在${applicationName}.log,当天之前的才备份为${applicationName}-%d{yyyy-MM-dd}.log -->
        <file>${logBasePath}/${applicationName}/${applicationName}.log</file>
        <encoder>
            <charset>utf-8</charset>
            <pattern>${pattern}</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logBasePath}/${applicationName}/${applicationName}-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
    </appender>

    <!-- 异步输出 -->
    <appender name="asyncInfoAppender" class="ch.qos.logback.classic.AsyncAppender">
        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
        <discardingThreshold>0</discardingThreshold>
        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
        <queueSize>512</queueSize>
        <!-- 异步输出需要设置为true才能输出行号等信息 -->
        <includeCallerData>true</includeCallerData>
        <!-- 添加附加的appender,最多只能添加一个 -->
        <appender-ref ref="infoAppender"/>
    </appender>
    
    <!-- 阿里云日志服务 开始 -->
    <springProfile name="uat,prod">
        <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
        <appender name="aliyun" class="com.aliyun.openservices.log.logback.LoghubAppender">
            <!-- Required parameters -->
            <!-- Configure account and network  -->
            <endpoint>cn-***.log.aliyuncs.com</endpoint>
            <accessKeyId>*********</accessKeyId>
            <accessKeySecret>*********</accessKeySecret>

            <!-- Configure sls -->
            <springProfile name="uat">
                <project>app-uat</project>
                <logStore>app-uat-logstore</logStore>
            </springProfile>
            <springProfile name="prod">
                <project>app</project>
                <logStore>app_log_store</logStore>
            </springProfile>
            <!-- Required parameters(end) -->

            <!-- Optional parameters -->
            <topic>${applicationName}-${profilesActive}</topic>
            <source></source>

            <!-- Optional parameters -->
            <totalSizeInBytes>104857600</totalSizeInBytes>
            <maxBlockMs>60000</maxBlockMs>
            <ioThreadCount>8</ioThreadCount>
            <batchSizeThresholdInBytes>524288</batchSizeThresholdInBytes>
            <batchCountThreshold>4096</batchCountThreshold>
            <lingerMs>2000</lingerMs>
            <retries>10</retries>
            <baseRetryBackoffMs>100</baseRetryBackoffMs>
            <maxRetryBackoffMs>100</maxRetryBackoffMs>

            <!-- Optional parameters -->
            <encoder>
                <pattern>${pattern}</pattern>
            </encoder>

            <!--  Optional parameters -->
            <timeFormat>yyyy-MM-dd'T'HH:mmZ</timeFormat>
            <!--  Optional parameters -->
            <timeZone>UTC</timeZone>
        </appender>
    </springProfile>
    <!-- 阿里云日志服务 结束 -->

    <!-- 分环境输出日志 -->
    <springProfile name="uat,prod">
        <root level="info">
            <appender-ref ref="aliyun"/>
        </root>
    </springProfile>
    <springProfile name="dev,test">
        <root level="info">
            <appender-ref ref="asyncInfoAppender"/>
        </root>
    </springProfile>
    <springProfile name="local">
        <root level="info">
            <appender-ref ref="consoleAppender"/>
            <appender-ref ref="asyncInfoAppender"/>
        </root>
    </springProfile>
</configuration>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值