logback学习使用总结

一、  使用前组件准备:

 

maven项目使用logback:

    pom文件中添加:       

<dependency>
     <groupId>ch.qos.logback</groupId>
     <artifactId>logback-core</artifactId>
     <version>1.1.5</version>
</dependency>
<dependency>
     <groupId>ch.qos.logback</groupId>
     <artifactId>logback-classic</artifactId>
     <version>1.1.5</version>
</dependency>
<dependency>
     <groupId>ch.qos.logback</groupId>
     <artifactId>logback-access</artifactId>
     <version>1.1.5</version>
</dependency>

 

 也可手动添加组件:

    logback-access-1.1.5.jar

    logback-classic-1.1.5.jar

    logback-core-1.1.5.jar 

    slf4j-api-1.7.16.jar 

注意:如果与框架结合使用 比如struts、spring、hibernate等开源框架,而这些框架很多是使用log4j记录日志的,因此需要log4j-over-slf4j-1.6.6.jar

 

二、开始使用

 

1、  使用logback将日志打印到控制台:

 

示例代码: 

/**
 * @author zw Date: 2016/10/9 Time:15:04.
 */
public class TestDemo {
    private static Logger log = LoggerFactory.getLogger(TestDemo.class);
    public static void main(String[]args){
        /**
         * log日志分为 trace debug info warn error 五个级别
         * 级别等级顺序 trace < debug < info < warn < error
         */
        log.trace("----this log is trace level");
        log.debug("----this log is debug level");
        log.info("----this log is info level");
        log.warn("----this log is warn level");
        log.error("----this log is error level");
        String name = "logback";
        String message = "demo";
        String[] params = { "logback", "logback" };
 
        // logback提供的可以使用变量的打印方式
        log.info("##########hello,{}!", name);
 
        // 使用占位符方式输出日志信息
        log.info("##########hello {}! this is {}!", name, message);
 
        // 可以传入一个数组
        log.info("##########hello {}! this is {}", params);
    }
}

logback.xml配置文件         

<?xml version="1.0" encoding="UTF-8"?>
<!--configuration 属性说明:
    scan属性:用来设置配置文件变动时是否重新加载,值是 true\false ,默认是true即 配置变动时重新加载
    scanPeriod属性:用来设置每隔多久检查一次配置是否变动,默认是1分钟,默认单位是毫秒
    debug属性:用来设置是否将logback内部的日志打印出来,即启动时输出配置加载信息。值为true\false 默认为false-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
         <!--定义日志输出格式-->
         <property name="enPattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
         <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
                 <encoder >
                     <pattern>${enPattern}</pattern>
                 </encoder>
         </appender>
         <!-- root的默认level是DEBUG 可以包含多个<appender-ref>元素-->
         <root level="TRACE">
             <appender-ref ref="STDOUT" />
         </root>
</configuration>

 2、  将日志记录到文件中: 

示例代码:同1中的示例代码。 

logback配置文件修改: 

在configuration中添加: 

<!--定义日志输出文件目录-->
<property name="outFilePath" value="E:/个人/demo/logs/demo.log" />

    并替换appender节点, 

<appender name="STDOUT" class="ch.qos.logback.core.FileAppender">
        <file>${outFilePath}</file>
        <append>true</append>
        <encoder charset="UTF-8">
            <pattern>${enPattern}</pattern>
        </encoder>
   </appender>

 3、同时输出到文件和控制台:

示例代码同1. 

配置文件如下: 

   <appender name="STDOUT"               class="ch.qos.logback.core.ConsoleAppender">
        <encoder charset="UTF-8">
            <pattern>${enPattern}</pattern>
        </encoder>
    </appender>
 
    <appender name="toFile" class="ch.qos.logback.core.FileAppender">
        <file>${outFilePath}</file>
        <append>true</append>
        <encoder charset="UTF-8">
            <pattern>${enPattern}</pattern>
        </encoder>
    </appender>
 
    <!-- root的默认level是DEBUG 可以包含多个<appender-ref>元素-->
    <root level="debug">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="toFile" />
    </root>

4、输出日志到文件每天或每小时等一个文件: 

示例代码:同1: 

配置文件: 

在3的基础上,修改。增加:

    <!--定义今日之前日志输出文件-->
    <property name="outOldFilePath" value="E:/个人/demo/logs/demo-%d{yyyy-MM-dd}.log" /> 

并修改 name为 toFile的appender,修改后如下: 

    <!--定义日志输出格式-->
    <property name="enPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level {%C.java:%L} - %msg%n" />
    <!--定义日志输出文件目录-->
    <property name="outFilePath" value="E:/个人/demo/logs/demo.log" />
    <!--定义今日之前日志输出文件-->
    <property name="outOldFilePath" value="E:/个人/demo/logs/demo-%d{yyyy-MM-dd}.log" />
    <!--带有loger的配置,不指定级别,不指定appender 输出到控制台-->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder charset="UTF-8">
            <pattern>${enPattern}</pattern>
        </encoder>
    </appender>
 
    <!--今日日志输出到 outFilePath ,今日之前的日志在 -->
    <appender name="toFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--今日日志记录的日志文件-->
        <file>${outFilePath}</file>
        <append>true</append>
        <!--设定昨日的日志文件-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--昨日日志的日志文件-->
            <fileNamePattern>${outOldFilePath}</fileNamePattern>
            <!--保留30天内的日志-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder charset="UTF-8">
            <pattern>${enPattern}</pattern>
        </encoder>
    </appender>
 
    <!-- root的默认level是DEBUG 可以包含多个<appender-ref>元素-->
    <root level="debug">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="toFile" />
    </root>

 也可以按分钟或小时分文件输出,调整 

<property name="outOldFilePath" value="E:/个人/demo/logs/demo-%d{yyyy-MM-dd}.log" />

 为:

a、按小时分:

<property name="outOldFilePath" value="E:/个人/demo/logs/demo-%d{yyyyMMddHH}.log" />

b、按分钟分:

<property name="outOldFilePath" value="E:/个人/demo/logs/demo-%d{yyyyMMddHHMM}.log" />

 

 如有理解不对的,请指正,谢谢

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值