logback是一个通用可靠、快速灵活的日志框架,它替代了log4j,和slf4j组成新的日志系统。

slf4j是一个日志门面,为其他各种日志框架提供了统一的接口,代码中使用slf4j可以避免对某一种日志框架造成依赖。

logback的文档地址:logback官方文档

配置示例地址:github

一、添加jar包引用

修改pom.xml文件,加入:

<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.1.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.7</version>
</dependency>

二、添加配置文件

在"src/main/resources"代码文件夹中新建文件"logback.xml",内容为:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 自定义属性名称 -->
<property name="App_Name" value="demo1" /> <!-- 输出到控制台 -->
<appender name="demo-log-console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 格式化日志输出格式 -->
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender> <!-- 输出到文件 -->
<appender name="demo-log-file" class="ch.qos.logback.core.FileAppender">
<!-- 活动日志名称 -->
<file>log/${App_Name}/testFile.log</file>
<!-- 是否接着上次的结尾继续,默认为true -->
<!-- <append>true</append> -->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender> <!-- 输出到滚动文件(时间策略) -->
<appender name="demo-log-rollingfiletime" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 活动日志名称 -->
<file>log/${App_Name}/testRollingFileTime.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 滚动日志名称 -->
<!-- 按最小的单位来,如果设置了mm,就是每分钟归档一次 -->
<fileNamePattern>log/${App_Name}/testRollingFileTime-%d{yyyy-MM-dd_HH-mm}-%i.log.zip</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 如果时间还没到,活动日志超过2KB,就归档一次,用%i区分 -->
<maxFileSize>2KB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 归档文件最长保留时间,没有时间单位,如果是每分钟归档一次,就是30分钟清除一次 -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<!-- 格式化日志输出格式 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender> <!-- 输出到滚动文件(窗口策略) -->
<appender name="demo-log-rollingfilefixed" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 活动日志名称 -->
<file>log/${App_Name}/testRollingFileFixed.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<!-- 滚动日志名称 -->
<fileNamePattern>log/${App_Name}/testRollingFileFixed-%i.log.zip</fileNamePattern>
<!-- 序号从1开始 -->
<minIndex>1</minIndex>
<!-- 文件超过3个就开始覆盖之前的 -->
<maxIndex>3</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<!-- 活动日志超过2KB,就归档一次,用%i区分 -->
<maxFileSize>2KB</maxFileSize>
</triggeringPolicy>
<encoder>
<!-- 格式化日志输出格式 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender> <!-- 自定义打印级别和范围 -->
<!-- additivity是否输出到父输出源 -->
<!-- level包括TRACE、DEBUG、INFO、WARN、ERROR -->
<logger name="org.xs.demo1" level="INFO" additivity="false">
<appender-ref ref="demo-log-console" />
<appender-ref ref="demo-log-file" />
<appender-ref ref="demo-log-rollingfiletime" />
<appender-ref ref="demo-log-rollingfilefixed" />
</logger> <!-- 默认的打印级别 -->
<root level="INFO">
<!-- <appender-ref ref="demo-log" /> -->
</root>
</configuration>

配置里的Appender是最常用的4个,其他还有很多,还可以自定义Appender

三、运行测试

1、在程序中加入log记录:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory; private final Logger log = LoggerFactory.getLogger(getClass().getName()); @RequestMapping("list2")
public String list2(HttpServletRequest request) { List<testInfo> list = testDao.getList();
request.setAttribute("testList", list); log.info("233"); return "list";
}

2、测试

tomcat启动后,在eclipse的相应目录下出现了3中类型的滚动日志

访问一次list2地址以后,控制台出现了一行信息

活动日志文件也有内容了,因为是39分加入了新内容,所以时间策略的滚动日志自动归档了38分的记录

多次访问list2地址以后,活动日志文件超出了2kb,产生了归档后的滚动日志文件

注:时间策略的滚动日志,在活动日志加入新内容时,会根据时间去归档之前的滚动日志文件,如果设定的1分钟还没到,活动日志超出了2kb,也会先归档这一部分的滚动日志文件。

实例代码地址:https://github.com/ctxsdhy/cnblogs-example

logback配置方法的更多相关文章

  1. 剖析项目多个logback配置(下)

    来源:http://www.cnblogs.com/guozp/p/5973038.html 上篇大概描述了logback的加载顺序以及加载的源码,本篇将分析如果在你的Maven或者其他多模块的项目中 ...

  2. Spring Boot 日志配置方法(超详细)

    默认日志 Logback : 默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台.在运行应用程序和其他例子时,你应该已经看到很多INFO级别的日志了. 从上图 ...

  3. JAVA项目中引用Logback的方法

    一.简介 本文主要讲JAVA项目中引入Logback的方法. 二.解决 1.引入依赖. <!--Begin LogBack Log--> <!-- https://mvnreposi ...

  4. Spring Boot系列一:默认日志logback配置解析

    前言 今天来介绍下Spring Boot如何配置日志logback,我刚学习的时候,是带着下面几个问题来查资料的,你呢 如何引入日志? 日志输出格式以及输出方式如何配置? 代码中如何使用? 正文 Sp ...

  5. Java中多环境Logback配置与ELK日志发送

    Java中多环境Logback配置与ELK日志发送   一.项目基于SpringBoot实现,引入SpringBoot相关库后,本文还要讲上传到ELK的Logstash,所以需要在pom.xml中加入 ...

  6. logback配置详解

    本文转自:https://segmentfault.com/a/1190000008315137 概览 简单地说,Logback 是一个 Java 领域的日志框架.它被认为是 Log4J 的继承人.L ...

  7. spring整合mybatis、hibernate、logback配置

    Spring整合配置Mybatis 1.配置数据源(连接数据库最基本的属性配置,如数据库url,账号,密码,和数据库驱动等最基本参数配置) <!-- 导入properties配置文件 --> ...

  8. logback -- 配置详解 -- 四 -- <filter>

    附: logback.xml实例 logback -- 配置详解 -- 一 -- <configuration>及子节点 logback -- 配置详解 -- 二 -- <appen ...

  9. logback -- 配置详解 -- 一 -- <configuration>及子节点

    附: logback.xml实例 logback -- 配置详解 -- 一 -- <configuration>及子节点 logback -- 配置详解 -- 二 -- <appen ...

随机推荐

  1. 用Python写了个下载快手视频的小脚本

    最近又重新拾起了,对python的热情. 贴个地址: https://github.com/d1y/lovepack/blob/master/kuaishou.py 前戏说明 因为我近乎癫狂的喜欢一个 ...

  2. 简单的JavaScript字符串加密解密

    简单的JavaScript字符串加密解密 <div> <input type="text" id="input" autofocus=&quo ...

  3. SQL奇技淫巧(01):给查出的数据排序编个号【row_number() over(order by c)】(mysql,db2,oracle,sqlserver通用)

    我们天天都在跟数据库打交道,写下的代码不计其数,写下的SQL更是可以绕地球几圈.这里收集关于SQL的神奇语法及用法,虽然你可能没有用过,但这些SQL却可以在关键的时候,派上用场. 我对SQL语句的理解 ...

  4. Leetcode之深度优先搜索(DFS)专题-1080. 根到叶路径上的不足节点(Insufficient Nodes in Root to Leaf Paths)

    Leetcode之深度优先搜索(DFS)专题-1080. 根到叶路径上的不足节点(Insufficient Nodes in Root to Leaf Paths) 这篇是DFS专题的第一篇,所以我会 ...

  5. 使用GPU跑Tensorflow代码实录

    使用conda创建一个新的虚拟环境 输入 conda create -n intelligent-judge python=3.6 创建一个python版本为3.6的名字是intelligent-ju ...

  6. Java并发编程实战.笔记十一(非阻塞同步机制)

    关于非阻塞算法CAS. 比较并交换CAS:CAS包含了3个操作数---需要读写的内存位置V,进行比较的值A和拟写入的新值B.当且仅当V的值等于A时,CAS才会通过原子的方式用新值B来更新V的值,否则不 ...

  7. hdu 4825 Xor Sum(01字典树模版题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4825 题解:一到01字典树的模版题,01字典树就是就是将一些树用二进制放到一个树上这样可以方便对整体异 ...

  8. codeforces 828 C. String Reconstruction(思维+优先队列)

    题目链接:http://codeforces.com/contest/828/problem/C 题解:有点意思的题目,可用优先队列解决一下具体看代码理解.或者用并查集或者用线段树都行. #inclu ...

  9. CodeForces 980 C Posterized

    Posterized 题意:将[0,255] 分成 若干段, 每一段的长度最多为k, 每一个数只能被放进一个段里, 然后每一段的数组都可以被这一段最小的数字表示, 求最小的字典序. 题解:每次一个访问 ...

  10. CodeForces 103 D Time to Raid Cowavans

    Time to Raid Cowavans 题意:一共有n头牛, 每头牛有一个重量,m次询问, 每次询问有a,b 求出 a,a+b,a+2b的牛的重量和. 题解:对于m次询问,b>sqrt(n) ...