SpringBoot自定义logback-spring.xml模板

<?xml version="1.0" encoding="UTF-8" ?>

<!-- 级别从高到低 OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!-- 日志输出规则根据当前ROOT级别, 日志输出时, 级别高于root默认的级别时 会输出 -->
<!-- scan 当此属性设置为 true 时, 配置文件如果发生改变, 将会被重新加载, 默认值为 true。 -->
<!-- scanPeriod 设置监测配置文件是否有修改的时间间隔, 如果没有给出时间单位, 默认单位是毫秒。当 scan 为 true 时, 此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug 当此属性设置为 true 时, 将打印出 logback 内部日志信息, 实时查看 logback 运行状态。默认值为 false。 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">

    <!-- 动态日志级别 -->
    <jmxConfigurator/>

    <!-- 日志记录级别 -->
    <springProperty name="log.level" source="logging.level.root" defaultValue="INFO"/>
    <!-- 应用名称 -->
    <springProperty name="log.appName" source="spring.application.name" defaultValue="SpringBoot"/>
    <!-- 日志文件home路径, 日志文件保存路径为${log.home}/${log.appName} -->
    <springProperty name="log.homePath" source="logging.file.path" defaultValue="/tmp/app/${log.appName}/logs"/>
    <!-- 日志文件保留天数, 默认30天 -->
    <springProperty name="log.maxHistory" source="logging.file.max-size" defaultValue="30"/>
    <!-- 日志文件大小, 默认15M -->
    <springProperty name="log.maxSize" source="logging.file.max-history" defaultValue="15MB"/>

    <!-- 打印sql语句 需要指定dao/mapper层包的位置 2.需修改-->
    <!--<property name="mapper.package" value="com.*.**.dao"/>-->

    <!-- 彩色日志 -->
    <!-- 配置格式变量:CONSOLE_LOG_PATTERN 彩色日志格式 -->
    <!-- magenta:洋红 -->
    <!-- boldMagenta:粗红-->
    <!-- cyan:青色 -->
    <!-- white:白色 -->
    <!-- magenta:洋红 -->
    <property name="CONSOLE_LOG_PATTERN"
              value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%blue(%thread) |%blue(%file:%line) |%green(%logger) |%cyan(%msg%n)"/>


    <springProfile name="dev, test">
        <!-- ConsoleAppender 控制台输出日志 -->
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>
                    <!-- 设置日志输出格式 -->
                    ${CONSOLE_LOG_PATTERN}
                </pattern>
            </encoder>
        </appender>
        <!-- TRACE级别日志 appender -->
        <!-- 滚动记录文件, 先将日志记录到指定文件, 当符合某个条件时, 将日志记录到其他文件 RollingFileAppender -->
        <!--<appender name="TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
        <!--    &lt;!&ndash;<File>${log.homePath}/${log.appName}/trace/%d{yyyy-MM-dd}/${log.appName}-trace.log</File>&ndash;&gt;-->
        <!--    <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
        <!--        &lt;!&ndash; 设置过滤级别 &ndash;&gt;-->
        <!--        <level>TRACE</level>-->
        <!--        &lt;!&ndash; 匹配就记录 &ndash;&gt;-->
        <!--        <onMatch>ACCEPT</onMatch>-->
        <!--        &lt;!&ndash; 不匹配就过滤 &ndash;&gt;-->
        <!--        <onMismatch>DENY</onMismatch>-->
        <!--    </filter>-->
        <!--    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
        <!--        &lt;!&ndash; 日志名称, 如果没有 <File> 属性, 那么只会使用 <FileNamePattern> 的文件路径规则-->
        <!--            如果同时有 <File> 和 <FileNamePattern>, 那么当天日志是 <File>, 明天会自动把今天-->
        <!--            的日志重命名为今天的日期。即 <File> 的日志都是当天的。&ndash;&gt;-->
        <!--        &lt;!&ndash;日志输出位置 可相对、和绝对路径 &ndash;&gt;-->
        <!--        <fileNamePattern>${log.homePath}/%d{yyyy-MM-dd}/trace/${log.appName}-%i.log-->
        <!--        </fileNamePattern>-->
        <!--        &lt;!&ndash; 只保留最近30天的日志 &ndash;&gt;-->
        <!--        <maxHistory>${log.maxHistory}</maxHistory>-->
        <!--        &lt;!&ndash; 日志文件最大的大小 &ndash;&gt;-->
        <!--        <MaxFileSize>${log.maxSize}</MaxFileSize>-->
        <!--    </rollingPolicy>-->
        <!--    <encoder>-->
        <!--        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>-->
        <!--    </encoder>-->
        <!--</appender>-->

        <!-- DEBUG级别日志 appender -->
        <!--<appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
        <!--    <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
        <!--        <level>DEBUG</level>-->
        <!--        <onMatch>ACCEPT</onMatch>-->
        <!--        <onMismatch>DENY</onMismatch>-->
        <!--    </filter>-->
        <!--    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
        <!--        <fileNamePattern>${log.homePath}/%d{yyyy-MM-dd}/debug/${log.appName}-%i.log-->
        <!--        </fileNamePattern>-->
        <!--        &lt;!&ndash; 只保留最近30天的日志 &ndash;&gt;-->
        <!--        <maxHistory>${log.maxHistory}</maxHistory>-->
        <!--        &lt;!&ndash; 日志文件最大的大小 &ndash;&gt;-->
        <!--        <MaxFileSize>${log.maxSize}</MaxFileSize>-->
        <!--    </rollingPolicy>-->
        <!--    <encoder>-->
        <!--        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>-->
        <!--    </encoder>-->
        <!--</appender>-->

        <!-- INFO级别日志 -->
        <!-- 滚动记录文件, 先将日志记录到指定文件, 当符合某个条件时, 将日志记录到其他文件 RollingFileAppender -->
        <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <fileNamePattern>${log.homePath}/%d{yyyy-MM-dd}/info/${log.appName}-%i.log
                </fileNamePattern>
                <!-- 只保留最近30天的日志 -->
                <maxHistory>${log.maxHistory}</maxHistory>
                <!-- 日志文件最大的大小 -->
                <MaxFileSize>${log.maxSize}</MaxFileSize>
            </rollingPolicy>
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
            </encoder>
        </appender>
    </springProfile>

    <!-- WARN级别日志 -->
    <!-- 滚动记录文件, 先将日志记录到指定文件, 当符合某个条件时, 将日志记录到其他文件 RollingFileAppender -->
    <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 过滤器, 只记录WARN级别的日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 设置过滤级别 -->
            <level>WARN</level>
            <!-- 匹配就记录 -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配就过滤 -->
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志输出位置 可相对、和绝对路径 -->
            <fileNamePattern>${log.homePath}/%d{yyyy-MM-dd}/warn/${log.appName}-%i.log</fileNamePattern>
            <!-- 只保留最近30天的日志 -->
            <maxHistory>${log.maxHistory}</maxHistory>
            <!-- 日志文件最大的大小 -->
            <MaxFileSize>${log.maxSize}</MaxFileSize>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- ERROR级别日志 -->
    <!-- 滚动记录文件, 先将日志记录到指定文件, 当符合某个条件时, 将日志记录到其他文件 RollingFileAppender -->
    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 过滤器, 只记录 ERROR 级别的日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 设置过滤级别 -->
            <level>ERROR</level>
            <!-- 匹配就记录 -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配就过滤 -->
            <onMismatch>DENY</onMismatch>
        </filter>
        <!-- 最常用的滚动策略, 它根据时间来制定滚动策略.既负责滚动也负责触发滚动 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 日志名称, 如果没有 <File> 属性, 那么只会使用 <FileNamePattern> 的文件路径规则
                如果同时有 <File> 和 <FileNamePattern>, 那么当天日志是 <File>, 明天会自动把今天
                的日志重命名为今天的日期。即 <File> 的日志都是当天的。-->
            <!--日志输出位置 可相对、和绝对路径 -->
            <fileNamePattern>
                ${log.homePath}/%d{yyyy-MM-dd}/error/${log.appName}-%i.log
            </fileNamePattern>
            <!-- 只保留最近30天的日志 -->
            <maxHistory>${log.maxHistory}</maxHistory>
            <!-- 日志文件最大的大小 -->
            <MaxFileSize>${log.maxSize}</MaxFileSize>
        </rollingPolicy>
        <encoder>
            <pattern>
                <!-- 设置日志输出格式 -->
                %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            </pattern>
        </encoder>
    </appender>

    <!-- 所有日志都会记录-->
    <appender name="APP" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ALL</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${log.homePath}/%d{yyyy-MM-dd}/app/${log.appName}-%i.log</fileNamePattern>
            <maxHistory>${log.maxHistory}</maxHistory>
            <MaxFileSize>${log.maxSize}</MaxFileSize>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <!--org.springframework.web包下的类的日志输出-->
    <logger name="org.springframework.web" additivity="false">
        <appender-ref ref="WARN"/>
        <appender-ref ref="APP"/>
        <appender-ref ref="ERROR"/>
    </logger>

    <!--dao层包下的类的日志输出-->
    <!--<logger name="${mapper.package}" additivity="false" level="DEBUG">-->
    <!--    <appender-ref ref="APP"/>-->
    <!--    <appender-ref ref="ERROR"/>-->
    <!--    &lt;!&ndash;打印控制台&ndash;&gt;-->
    <!--    <appender-ref ref="CONSOLE"/>-->
    <!--</logger>-->


    <springProfile name="dev, test">
        <root>
            <!-- 控制台输出 -->
            <appender-ref ref="CONSOLE"/>
            <!-- 需要自行解除注释, 也需要解除对应的appender -->
            <!--<appender-ref ref="TRACE"/>-->
            <!--<appender-ref ref="DEBUG"/>-->
            <appender-ref ref="INFO"/>
        </root>
    </springProfile>

    <!-- root级别 -->
    <root level="${log.level}">
        <appender-ref ref="WARN"/>
        <appender-ref ref="ERROR"/>
        <appender-ref ref="APP"/>
    </root>

</configuration>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. 添加logback-spring.xml文件 在src/main/resources目录下创建一个名为logback-spring.xml的文件,将下面的代码复制并粘贴进去。 ``` <?xml version="1.0" encoding="utf-8" ?> <configuration> <!-- 确定打印的日志级别 --> <timestamp key="byDay" datePattern="yyyyMMdd" /> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} -%msg%n</pattern> </encoder> </appender> <!-- 输出到本地文件 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/springboot2.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/springboot2.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} -%msg%n</pattern> </encoder> </appender> <!-- root级别日志处理器 --> <root level="info"> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </root> <!-- 配置包日级别日志处理器 --> <logger name="com.example" level="debug" additivity="false"> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </logger> </configuration> ``` 2. 配置文件参数 在application.properties或application.yml文件中添加以下参数: - logging.config:指定logback-spring.xml配置文件路径,如果不指定将使用默认的日志配置。 - logging.path:指定日志文件存放路径,必须是一个相对目录。例如:logging.path=log 相当于在项目根目录下创建了一个log文件夹,日志将输出到该文件夹中。如果没有设置该参数,则日志将输出到控制台。 ``` #以配置文件的方式加载日志框架,默认使用logback-spring.xml作为配置文件 logging.config=classpath:logback-spring.xml #指定日志存放的相对路径 logging.path=log ``` 3. 在代码中使用日志输出 在需要输出日志的类中使用注入方式加载日志,在方法中使用对应的日志级别输出日志。 ``` @Component public class TestController { private static final Logger logger = LoggerFactory.getLogger(TestController.class); @RequestMapping("/test") public String test() { logger.debug("这是一条debug日志"); logger.info("这是一条info日志"); logger.warn("这是一条warn日志"); logger.error("这是一条error日志"); return "test"; } } ``` 运行项目,打开控制台或者查看日志文件,可以看到日志已经输出成功。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值