7.Logback

Logback

官网地址——http://logback.qos.ch/

Logback介绍

logback是由log4j创始人设计的另一个开源日志组件,性能比log4j要好。

Logback模块介绍

  1. logback-core——其他两个模块的基础
  2. logback-classis——它是log4j的一个改良版本,同时它完整实现了slf4j API
  3. logback-access——访问模块与Servlet容器集成提供通过HTTP来访问日志的功能

依赖

<dependency>
	<groupId>ch.qos.logback</groupId>
	<artifactId>logback-classic</artifactId>
	<version>1.2.3</version>
</dependency>
<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-api</artifactId>
	<version>1.7.26</version>
</dependency>

Logback的组件

1.Logger

  1. 日志的记录器
  2. 把他关联到应用对应的context上
  3. 主要用于存放日志对象
  4. 可以自定义日志类型级别

2.Appender

  1. 用于指定日志输出的目的地
  2. 目的地可以是控制台,文件,数据库等

3.Layout

  1. 负责把事件转换成字符串
  2. 格式化的日志信息的输出
  3. 在logback中Layout对象被封装在encoder中

Logback配置

配置文件读取顺序

  1. logback.groovy
  2. logback-test.xml
  3. logback.xml
  4. 如果都不存在使用默认的

占位符含义

  1. %level——日志级别
  2. %d{yyyy-MM-dd HH:mm:ss.SSS}——日期
  3. %c——类的完整名称
  4. %M——方法
  5. %L——行号
  6. %thread——线程名称
  7. %m或%msg——信息
  8. %n——换行

logback.xml详解

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--这个配置文件演示了控制台appender    -->
    <!--自定义变量方便其他标签引用    -->
    <property name="pattern" value="[%level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L %thread %m %n" ></property>
    <!--指定Appender为控制台appender    -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!--指定输出流对象,效果就是字体颜色不一样了,默认是System.out是黑色的,这个是红色的        -->
        <target>System.err</target>
        <!--指定Layout为自定义Layout        -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--指定自定义输出格式,${pattern}引用了上面的标签            -->
            <pattern>${pattern}</pattern>
        </encoder>
    </appender>

    <!--root是默认的logger对象 指定输出级别为ALL  -->
    <root level="ALL">
        <!--指定Appender为  console      -->
        <appender-ref ref="console"></appender-ref>
    </root>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--这个配置文件演示了fileappender    -->
    <!--自定义变量方便其他标签引用 []表示加粗   -->
    <property name="pattern" value="[%level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L %thread %m %n" ></property>
    <property name="log_dir" value="/logs"></property>
    <!--指定Appender为fileappender    -->
    <appender name="file" class="ch.qos.logback.core.FileAppender">
        <!--指定Layout为自定义Layout        -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--指定自定义输出格式,${pattern}引用了上面的标签            -->
            <pattern>${pattern}</pattern>
        </encoder>
        <!--日志文件保存路径        -->
        <file>${log_dir}/logback.log</file>
    </appender>

    <!--root是默认的logger对象 指定输出级别为ALL  -->
    <root level="ALL">
        <!--指定Appender为  file      -->
        <appender-ref ref="file"></appender-ref>
    </root>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--这个配置文件演示了fileappender  不过文件格式是html   -->
    <!--自定义变量方便其他标签引用,指定输出格式HTML格式的Layout不需要 空格啥的   -->
    <property name="pattern" value="%level%d{yyyy-MM-dd HH:mm:ss.SSS}%c%M%L%thread%m"></property>
    <property name="log_dir" value="/logs"></property>

    <!--指定Appender为fileappender    -->
    <appender name="html" class="ch.qos.logback.core.FileAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <!--指定Layout为HTMLLayout     -->
            <layout class="ch.qos.logback.classic.html.HTMLLayout">
                <!--指定自定义输出格式,${pattern}引用了上面的标签            -->
                <pattern>${pattern}</pattern>
            </layout>
        </encoder>
        <!--日志文件保存路径        -->
        <file>${log_dir}/logback.html</file>
    </appender>

    <!--root是默认的logger对象 指定输出级别为ALL  -->
    <root level="ALL">
        <!--指定Appender为  html      -->
        <appender-ref ref="html"></appender-ref>
    </root>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--这个配置文件演示了rollingfileappender    -->
    <!--自定义变量方便其他标签引用 []表示加粗   -->
    <property name="pattern" value="[%level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L %thread %m %n" ></property>
    <property name="log_dir" value="/logs"></property>
    <!--指定Appender为fileappender    -->
    <appender name="rollFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--指定Layout为自定义Layout        -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--指定自定义输出格式,${pattern}引用了上面的标签            -->
            <pattern>${pattern}</pattern>
        </encoder>
        <!--日志文件保存路径        -->
        <file>${log_dir}/logback.log</file>
        <!--指定日志拆分规则        -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--按照时间拆分    gz可以去掉代表压缩  %i指的是生成顺序        -->
            <fileNamePattern>${log_dir}/rolling.%d{yyyy-MM-dd-HH-mm-ss}.log%i.gz</fileNamePattern>
            <!--按照文件大小拆分            -->
            <maxFileSize>1MB</maxFileSize>
        </rollingPolicy>
    </appender>

    <!--root是默认的logger对象 指定输出级别为ALL  -->
    <root level="ALL">
        <!--指定Appender为  rollFile      -->
        <appender-ref ref="rollFile"></appender-ref>
    </root>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <!-- 诸多配置集合 -->
    
    <property name="pattern1" value="[%level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L %thread %m %n" ></property>
    <property name="pattern2" value="%level%d{yyyy-MM-dd HH:mm:ss.SSS}%c%M%L%thread%m"></property>
    <property name="log_dir" value="/logs"></property>

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <target>System.out</target>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${pattern1}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <appender name="file" class="ch.qos.logback.core.FileAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${pattern1}</pattern>
        </encoder>
        <file>${log_dir}/logback1.log</file>
    </appender>
    <appender name="html" class="ch.qos.logback.core.FileAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="ch.qos.logback.classic.html.HTMLLayout">
                <pattern>${pattern2}</pattern>
            </layout>
        </encoder>
        <file>${log_dir}/logback.html</file>
    </appender>
    <appender name="rollFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${pattern1}</pattern>
        </encoder>
        <file>${log_dir}/logback2.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${log_dir}/rolling-%d{yyyy-MM-dd-HH-mm-ss}.%i.log</fileNamePattern>
            <maxFileSize>1MB</maxFileSize>
        </rollingPolicy>
    </appender>
    <appender name="async" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="rollFile"/>
    </appender>

    <logger name="cn.shanguoyu.log" level="debug" additivity="false">
        <appender-ref ref="console"/>
    </logger>

    <root level="ALL">
        <appender-ref ref="console"></appender-ref>
        <appender-ref ref="file"></appender-ref>
        <appender-ref ref="html"></appender-ref>
        <appender-ref ref="rollFile"></appender-ref>
    </root>
</configuration>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值