欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

logback简介,配置及相关说明

程序员文章站 2022-03-05 08:17:17
...

写在前面的话:有简介(1)和具体logback.xml配置(2),配置里有详细说明

1.logback介绍

log4j大家都很熟悉,logback和log4j出自同一个作者,logback里有对log4j的封装,从某一方面来讲,logback和log4j的升级

1.1logback的主要模块(3个)

logback-access:以servlet容器集成,提供通过http来访问日志的功能。
这意味着第三方软件可以通过logback-access模块来访问logback里记录的日志

logback-classic:是一个log4j的改良版本。并完整的实现了slf4j的api,这样我们就可以很方便的更换成其他日志系统

logback-core:为前两个模块提供基础服务。

2.配置文件及详细说明(看注释)

  1. logback输出哪些到哪里,输出什么级别在logger标签里定义
  2. 下面的appender标签:定义向某文件或控制台输出log信息
  3. 看注释吧?
    ps:如要使用,只需将logger标签的name改你的就ojdk?
<?xml version="1.0" encoding="UTF-8" ?>

<!-- 定时扫描配置看是否变化,60s -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 定义参数常量-->
    <!-- 级别: TRACE<DEBUG<INFO<WARN<ERROR,以下为只记录debug级别以上的日志 -->
    <property name="log.level" value="debug"></property>
    <!-- 文件保留时间 -->
    <property name="log.maxHistory" value="30"></property>
    <!-- 文件存放路径 Tomcat实例根目录/logs/webapps -->
    <property name="log.filePath" value="${catalina.base}/logs/webapps"></property>
    <!-- log输出格式:时间 线程 级别 信息(package,类) -->
    <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"></property>


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

    <!--debug-->
    <appender name="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 文件路径 -->
        <file>
            <pattern>${log.filePath}/debug.log</pattern>
        </file>

        <!-- 滚动策略:基于时间滚动 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 按天数 -->
            <fileNamePattern>${log.filePath}/debug/debug.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
            <!-- 文件最大保存时间 -->
            <maxHistory>${log.maxHistory}</maxHistory>
        </rollingPolicy>

        <!-- 输出格式,将日志信息转换成字符串,并以${log.pattern}格式输出到文件 -->
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>

        <filter class = "ch.qos.logback.classic.filter.LevelFilter">
            <!-- 仅接受DEBUG相关 -->
            <level>DEBUG</level>
            <!-- 匹配就ACCEPT -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配就DENY -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- INFO -->
    <appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 文件路径 -->
        <file>
            <pattern>${log.filePath}/info.log</pattern>
        </file>

        <!-- 滚动策略:基于时间滚动 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 按天数 -->
            <fileNamePattern>${log.filePath}/info/info.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
            <!-- 文件最大保存数量 -->
            <maxHistory>${log.maxHistory}</maxHistory>
        </rollingPolicy>

        <!-- 输出格式,将日志信息转换成字符串,并以${log.pattern}格式输出到文件 -->
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>

        <filter class = "ch.qos.logback.classic.filter.LevelFilter">
            <!-- 仅接受INFO相关 -->
            <level>INFO</level>
            <!-- 匹配就ACCEPT -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配就DENY -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- ERROR -->
    <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 文件路径 -->
        <file>
            <pattern>${log.filePath}/error.log</pattern>
        </file>

        <!-- 滚动策略:基于时间滚动 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 按天数 -->
            <fileNamePattern>${log.filePath}/error/error.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
            <!-- 文件最大保存数量 -->
            <maxHistory>${log.maxHistory}</maxHistory>
        </rollingPolicy>

        <!-- 输出格式,将日志信息转换成字符串,并以${log.pattern}格式输出到文件 -->
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>

        <filter class = "ch.qos.logback.classic.filter.LevelFilter">
            <!-- 仅接受ERROR相关 -->
            <level>ERROR</level>
            <!-- 匹配就ACCEPT -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配就DENY -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 一个类只能对应一个logger,若没有指定logger,就在根log里输出,以下因additivity="true",继承根log的appender-ref,所以也在控制台输出 -->
    <!-- 对com.tl.o2o下所有log.level级别以上的文件的log起作用 additivity="true":继承根log的appender-ref -->
    <logger name="com.tl.o2o" level = "${log.level}" additivity="true">
        <appender-ref ref="debugAppender"/>
        <appender-ref ref="infoAppender"/>
        <appender-ref ref="errorAppender"/>
    </logger>

    <!-- 根log,若上面那个log未指定level,默默认为根log的level -->
    <root level="info">
        <appender-ref ref="consoleAppender"/>
    </root>

</configuration>
相关标签: logback