Logback日志详解

Logback是log4j的改良,更好更快更强大的性能

主要模块:

    logback-access:与servlet容器集成,提供通过Http访问日志的功能。

    logback-classic:log4j的改良版本。

    logback-core:为上两个提供基础的服务。

主要标签:

logger:作为日志的记录器,主要用于存放日志对象,也可以定义日志的类型、级别等。

appender:指定日志输出的目的地(既媒介:控制台、文件、远程服务器等)。

layout:格式化日志信息的输出。

日志级别

    trace < debug < info < warn < error

工作原理:

    如果不进行配置,JDK1.6以上的会调用com.qos.logback.classic.spi.Configurator接口里的第一个实现类。

    如果都没有配置,会调用ch.qos.logback.classic.BasicConfigurator这个实现类,在控制台中输出日志。

相关配置:

<configuration scan="true" scanPeriod="60 seconds" debug="false">


scan:当属性设置为true时,日志文件如果发生改变,将会重新被加载。

scanPeriod:设置检测日志文件是否有修改时间的时间间隔,默认是毫秒。

debug:是否打印logback内部的日志信息,查看logback的运行状态,一般不需要。

 

设置记录日志的级别

<configuration name="log.level" value="debug" />

设置日志文件保留的时间

<configuration name="log.maxHistory" value="30" />

设置日志文件保存的位置

<configuration name="log.filePath" value="${catalina.base}/logs/webapps" />

设置日志展示的格式、标识程序属于哪个线程执行、什么级别、相关的日志信息、%n是换行符

<configuration name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss:SSS} [%thead] %-5level %logger{50} - %msg%n" />

 

</configuration>

 

以下是详细日志代码设置:

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

 <!--scan:true时,当日志文件发生改变,将会被重新加载-->
 <!--debug:false时,不打印logback内部的日志信息-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 定义参数变量 -->
    <!-- 设置记录四个级别的日志信息 debug < info < warn < error-->
    <property name="log.level" value="debug"/>
    <!-- 设置日志文件保留的时间 -->
    <property name="log.maxHistory" value="30"/>
    <!-- 设置日志文件保存的位置 -->
    <property name="log.filePath" value="${catalina.base}/logs/webapps"/>
    <!-- 设置日志展示的格式、标识程序属于哪个线程执行、什么级别、相关的日志信息、%n是换行符 -->
    <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thead] %-5level %logger{50} - %msg%n"/>

    <!-- 控制台设置 -->
    <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>${log.filePath}/debug.log</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>
        <encoder>
            <!-- 将日志信息转化为字符串,以log.pattern的格式输出到文件里 -->
            <pattern>${log.pattern}</pattern>
        </encoder>
        <!-- 过滤掉不是DEBUG的日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>           //如果是DEBUG级别的日志信息,则记录
            <onMismatch>DENY</onMismatch>       //如果不是DEBUG级别的则过滤掉
        </filter>
    </appender>

    <!-- INFO -->
    <appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 文件路径 -->
        <file>${log.filePath}/info.log</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>
        <encoder>
            <!-- 将日志信息转化为字符串,以log.pattern的格式输出到文件里 -->
            <pattern>${log.pattern}</pattern>
        </encoder>
        <!-- 过滤掉不是DEBUG的日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>           //如果是INFO级别的日志信息,则记录
            <onMismatch>DENY</onMismatch>       //如果不是INFO级别的则过滤掉
        </filter>
    </appender>

    <!-- ERROR -->
    <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 文件路径 -->
        <file>${log.filePath}/error.log</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>
        <encoder>
            <!-- 将日志信息转化为字符串,以log.pattern的格式输出到文件里 -->
            <pattern>${log.pattern}</pattern>
        </encoder>
        <!-- 过滤掉不是DEBUG的日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>           //如果是ERROR级别的日志信息,则记录
            <onMismatch>DENY</onMismatch>       //如果不是ERROR级别的则过滤掉
        </filter>
    </appender>

    <!-- 存放日志对象,同时设置logback关注哪个package下的信息,哪个level以上的日志信息 -->
    <logger name="com.hlt" level="${log.level}" additivity="true">
        <!-- additivity="true"会将父类root里的appender-ref属性也加在logger里,其余不变 -->
        <appender-ref ref="debugAppender"/>
        <appender-ref ref="infoAppender"/>
        <appender-ref ref="errorAppender"/>
    </logger>
    <!-- 父级logger,如果上面没有找到对应的level,则继承root下的level,仅输出info级别以上的信息 -->
    <root level="info">
        <appender-ref ref="consoleAppender"/>
    </root>

</configuration>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值