美文网首页
Logback的基本使用及配置

Logback的基本使用及配置

作者: 曾泽浩 | 来源:发表于2019-11-15 11:11 被阅读0次

简介

Logback旨在作为流行的log4j项目的后继者,从log4j离开的地方接手

Logback的体系结构足够通用,可以应用在不同的情况下。目前,logback分为三个模块:logback-core,logback-classic和logback-access。

logback-core模块为其他两个模块奠定了基础。logback-classic模块可以与log4j的显着改进版本同化。此外,经典的logback原生实现了SLF4J API,因此您可以轻松地在logback和其他日志框架(例如log4j或java.util.logging(JUL))之间来回切换。

logback-access模块与Servlet容器(例如Tomcat和Jetty)集成,以提供HTTP访问日志功能。请注意,您可以轻松地在logback-core之上构建自己的模块。

pom文件配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zzh.log</groupId>
    <artifactId>log</artifactId>
    <version>1.0-SNAPSHOT</version>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-complier</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.21</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
    </dependencies>
    
</project>

logback配置解读

先了解几个概念loggerappenderencoder

logger:作为日志的记录器,把它关联到应用的对应的context后,主要用于存放日志对象,也可以定义日志类型、级别。

appender:主要用于指定日志输出的目的地,目的地可以是控制台、文件等。

encoder:负责把事件转换成字符串,格式化日志信息的输出。

配置实例

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan = "true" scanPerod = "10 seconds" debug = "false">
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 日志输出编码 -->
        <Encoding>UTF-8</Encoding>
        <encoder>
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <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">
        <Encoding>UTF-8</Encoding>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>myApp.log.%d{yyyy-MM-dd}.log</FileNamePattern>
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder>
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            </pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <logger name = "com.zzh.LogBackLogger" level="error" additivity="false">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </logger>

    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>

</configuration>
  1. 根节点<configuration>,其下包含以下三个属性

    scan:此属性为true时,配置文件如果发生改变,将会重新加载,默认值为true。

    scanPeriod:设置监测配置文件是否有修改的时间间隔,当scan为true时,该属性生效。

    debug:当此属性为true时,将打印出logback内部日志信息,实时查看logback运行状态。

  2. 子节点<appender>用于配置写日志的组件,有两个必要属性:name用于指定appender的名称,每一个appender的名称唯一,class指定appender的全限定名。appender有三种类型,分别是:ConsoleAppender、FileAppender、RollingFileAppender,ConsoleAppender是把日志输出到控制台,FileAppender是把日志添加到文件,而RollingFileAppender是把日志输出到文件并且定期进行清理。

  3. 子节点<logger>用于设置某一个包或具体的某一个类的日志打印级别、以及指定<appender><logger>有三个属性:name用来指定受此logger约束的某一个包或某一个具体的类;level用来设置打印级别,大小写无关;addtivity用于设置是否向上一级logger传递打印信息。也可以用<appender-ref>指定相应的appender。

  4. 子节点<root>是所有logger的上级,只有一个level属性,level属性用来设置打印级别,除了普通的打印级别外,还支持ALL和OFF,不能设置为INHERITED或者同义词NULL。默认是DEBUG。

<root>和<logger>的关系,<root>本质上也是一个logger,是所有的logger的父级,可以通过addtivity属性设为false。
参考链接:https://blog.csdn.net/ryelqy/article/details/81532481

相关文章

网友评论

      本文标题:Logback的基本使用及配置

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