Logback

 Logback在maven中的依赖,去阿里云maven仓库查询出Logback版本目前到了可使用1.2.3版本

<!-- logback+slf4j -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.21</version>
    <type>jar</type>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.2.3</version>
    <type>jar</type>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
    <type>jar</type>
</dependency>

  logback在Java代码中的使用

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Test {

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

    public void add(){
        LOGGER.info("记录日志");

    }
}

 Logback.xml配置文件属性:

 appender 节点:日志输出组件,主要负责日志的输出以及格式化日志。常用的属性有name和class。

 属性name,无默认值,appender组件的名称,后面给logger指定appender使用。

 属性class,无默认值,appender的具体实现类。常用的有 ConsoleAppender、FileAppender、RollingFileAppender。

 ConsoleAppender:向控制台输出日志内容的组件,只要定义好encoder节点就可以使用(推荐)。

 FileAppender:向文件输出日志内容的组件,用法也很简单,不过由于没有日志滚动策略,一般很少使用

 RollingFileAppender:向文件输出日志内容的组件,同时可以配置日志文件滚动策略,在日志达到一定条件后生成一个新的日志文件。

<!--控制台输出-->
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <!--pattern表示日志内容输出格式-->
        <pattern>${std}</pattern>
        <!--charset表示日志内容编码-->
        <charset>${encoding}</charset>
    </encoder>
</appender>
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!--定义日志输出的路径-->
    <!--这里的scheduler.manager.server.home 没有在上面的配置中设定,所以会使用java启动时配置的值-->
    <!--比如通过 java -Dscheduler.manager.server.home=/path/to XXXX 配置该属性-->
    < file>${scheduler.manager.server.home}/logs/${app.name}.log</file>
    <!--定义日志滚动的策略-->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!--定义文件滚动时的文件名的格式-->
        <fileNamePattern>${scheduler.manager.server.home}/logs/${app.name}.%d{yyyy-MM-dd.HH}.log.gz</fileNamePattern>
        <!--60天的时间周期,日志量最大20GB-->
        <maxHistory>60</maxHistory>
        <!-- 该属性在 1.1.6版本后 才开始支持-->
        <totalSizeCap>20GB</totalSizeCap>
    </rollingPolicy>
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <!--每个日志文件最大100MB-->
        <maxFileSize>100MB</maxFileSize>
    </triggeringPolicy>
    <!--定义输出格式-->
    <encoder>
        <pattern>%d [%thread] %-5level %logger{36} [%file : %line] - %msg%n</pattern>
    </encoder>
</appender>

 

%logger{length}、%c{length}、%lo{length}:在日志事件的源点输出logger的名称

LoggerFactory.getLogger(TestMain.class),此时%logger的值为"com.xxx.TestMain"

LoggerFactory.getLogger("FILE-LOGGER"),此时其值为"FILE-LOGGER"。

其中{length}为可选项,length值为数值类型(>=0),在不丢失含义的情况下来限定logger名字的长度(缩短);在指定length情况下,将会直接返回“.”字符最右端的子字符串。如下为示例:

配置             logger名                        结果  
%logger     mainPackage.sub.sample.Bar  mainPackage.sub.sample.Bar  
%logger{0}  mainPackage.sub.sample.Bar  Bar  
%logger{5}  mainPackage.sub.sample.Bar  m.s.s.Bar  
%logger{10} mainPackage.sub.sample.Bar  m.s.s.Bar  
%logger{15} mainPackage.sub.sample.Bar  m.s.sample.Bar  
%logger{16} mainPackage.sub.sample.Bar  m.sub.sample.Bar  
%logger{26} mainPackage.sub.sample.Bar  mainPackage.sub.sample.Bar  

由此可见,无论length如何设置,“Bar” 总会完整输出;当length过小时,将会根据“.”分割且只输出缩写;根据length的情况,从  最右端开始逐级补全。为了易读,我们尽可能使用%logger输出全名。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值