Logback的简单使用

1、前言


 

查了很多资料,都说logback的性能都要比log4j的性能要好,logback逐渐要取代log4j。今天对logback作一个简单的整理。

2、loback的坐标依赖

<!--
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.6.4</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.0.6</version>
    </dependency>
-->

<!-- 该依赖包括了上面两个依赖,所以只要引入该依赖即可 -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.0.6</version>
</dependency>

3、配置文件:logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration
    xmlns="http://ch.qos.logback/xml/ns/logback"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://ch.qos.logback/xml/ns/logback https://raw.githubusercontent.com/enricopulatzo/logback-XSD/master/src/main/xsd/logback.xsd">
    <property name="LOG_HOME" value="tp/log"/>
    <!-- 输出到控制台 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender" >
        <!-- 输出的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:  %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 配置滚动的策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志名称的格式 -->
            <fileNamePattern>${LOG_HOME}/logback.log.%d{yyyy-MM-dd}</fileNamePattern>
            <!-- 保存的最长时间:天数 -->
            <MaxHistory>1</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:  %msg%n</pattern>
        </encoder>
    </appender>

    <!--
    注意:
    level属性也可以直接写在logger上,如:
    <logger name="ws.log.logback.LogbackTest" additivity="false" level="INFO">
        <appender-ref ref="STDOUT" />
    </logger>
    -->
    <logger name="ws.log.logback.LogbackTest" additivity="false">
        <level value="INFO" />
        <appender-ref ref="STDOUT" />
    </logger>

    <!-- 相当于logger元素,只是name值已经确定为root了 -->
    <root level="warn">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>
4、代码实例:
//注意导入的包都是slf4j的包
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogbackTest {

    private static final Logger LOGGER = LoggerFactory.getLogger(LogbackTest.class);

    public static void main(String[] args) {
        LOGGER.trace("logback的--trace日志--输出了");
        LOGGER.debug("logback的--debug日志--输出了");
        LOGGER.info("logback的--info日志--输出了");
        LOGGER.warn("logback的--warn日志--输出了");
        LOGGER.error("logback的--error日志--输出了");
    }
}

5、效果展示

按照logger指定的输出级别输出,会覆盖root指定的级别。

6、注意:

loger和logger的问题,通过查询文档。才了解logback中是没有loger元素的。我被技术博客误导了。其实在测试时候已经出现错误日志了,如最后一张图紫红区域,是当时疏忽了。笔者已经更改。为了方便可以在xml中配置名称空间,就会有相应的提示,就不会这样的错误。如果不配置,会提示用过的标签,不管对错都会提示。这样会产生误区。名称空间可以参考该博客的logback.xml配置。

 


 

参考资料:

技术博客:http://www.cnblogs.com/warking/p/5710303.html 【该技术博客中的loger就是指logger】
官网:https://logback.qos.ch/manual/configuration.html
译文:https://www.oschina.net/translate/logging-in-java-switching-to-logback

转载于:https://www.cnblogs.com/AlanWilliamWalker/p/11122218.html

logback的EvaluatorFilter是一个非常有用的过滤器,它允许您根据特定的条件来过滤日志事件。EvaluatorFilter使用一种简单的表达式语言,可以根据事件的属性值来评估条件。 EvaluatorFilter的配置通常在logback的配置文件中进行。下面是一个简单的配置示例: ```xml <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> <evaluator> <expression>level >= INFO</expression> </evaluator> <OnMismatch>DENY</OnMismatch> <OnMatch>NEUTRAL</OnMatch> </filter> </appender> ``` 在上面的示例中,我们创建了一个ConsoleAppender,并添加了EvaluatorFilter作为过滤器。EvaluatorFilter使用<expression>元素指定了一个条件表达式,该表达式评估事件的日志级别是否大于等于INFO。如果评估结果为true(即日志级别大于等于INFO),则执行<OnMatch>元素指定的操作,这里是NEUTRAL。如果评估结果为false(即日志级别小于INFO),则执行<OnMismatch>元素指定的操作,这里是DENY。 EvaluatorFilter支持一些预定义的变量和操作符,可以在表达式中使用。例如,您可以使用"level"变量表示日志事件的日志级别,还可以使用"marker"变量表示事件的标记。您还可以使用比较运算符(如">"、"<"、">="、"<=")来比较属性的值。 除了简单的条件表达式外,EvaluatorFilter还支持复杂的表达式,例如使用逻辑运算符(如"&&"、"||")来组合多个条件。您可以根据自己的需求编写更复杂的表达式。 总之,EvaluatorFilterlogback中一个功能强大的过滤器,可以根据条件来过滤日志事件。通过合理配置EvaluatorFilter,您可以根据需要精确地控制日志的输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值