美文网首页
SpringBoot+slf4j+logback记录日志

SpringBoot+slf4j+logback记录日志

作者: pingwazi | 来源:发表于2020-08-23 13:52 被阅读0次

    已亲测OK

    有任何问题请联系我QQ:273206491

    导包

      <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
            </dependency>
    

    编写配置文件logback.xml(文件放在资源文件夹中)

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration debug="false">
    
        <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
        <property name="LOG_HOME" value="/Users/apple/Desktop/CheckDBLogs" />
    
        <!--控制台日志, 控制台输出 -->
        <appender name="ConsoleLog" class="ch.qos.logback.core.ConsoleAppender">
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%msg:日志消息,%n是换行符-->
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
                <charset>UTF-8</charset>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <!--设置日志级别-->
                <level>ALL</level>
            </filter>
        </appender>
        <appender name="SysLocalFileLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_HOME}/api.log</file><!--最新的日志记录位置-->
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <fileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}-%i.log</fileNamePattern><!--当单个日志文件超过最大尺寸时,就该文重命名为一个新的文件,并不再接受日志写入-->
                <maxFileSize>500MB</maxFileSize><!--单个日志文件的最大尺寸-->
                <maxHistory>20</maxHistory><!--最多保存多少个文件-->
                <totalSizeCap>20GB</totalSizeCap><!--所有日志文件的最大尺寸-->
            </rollingPolicy>
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
                <charset>UTF-8</charset>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <!--设置日志级别-->
                <level>ERROR</level>
            </filter>
        </appender>
        <!--myibatis log configure-->
        <logger name="com.apache.ibatis" level="TRACE"/>
        <logger name="java.sql.Connection" level="DEBUG"/>
        <logger name="java.sql.Statement" level="DEBUG"/>
        <logger name="java.sql.PreparedStatement" level="DEBUG"/>
    
        <!-- 从高到地低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->
        <!--
        root也是一个logger,只不过他是所有logger的根,如果子logger中没有指定相关信息,那么他就会到父logger中找
        logger中的level是定义日志记录的级别,比如这里的root就是记录DEBUG级别及以上的日志
        -->
        <root level="DEBUG">
            <appender-ref ref="ConsoleLog"/><!--控制台日志记录等级为所有日志-->
            <appender-ref ref="SysLocalFileLog"/><!--文件中只保存ERROR级别及其以上的日志-->
        </root>
    </configuration>
    

    使用

    我这里测试是使用单元测试,当然你也可以不使用单元测试。只要创建一个Logger对象就可以了。
    /**
     * @author pingwazi
     * @description
     */
    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = ApplicationRun.class)
    public class LogBackTest {
        private final static Logger logger = LoggerFactory.getLogger(LogBackTest.class);
        @Test
        public void writeLogTest()
        {
            while (true)
            {
                logger.error("测试日志写入");
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:SpringBoot+slf4j+logback记录日志

          本文链接:https://www.haomeiwen.com/subject/mliijktx.html