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. 宁远电子瑞芯微RK3399开发板DLT3399A底层接口调用

     GPIO口控制 在DLT3399A板卡正面写有GPIO和UART4_1V8丝印的接口,并看到板子反面对应的引脚gpio丝印,选择相对应的gpio控制节点,接口位置如下图所示: 1.dlt3399a上 ...

  2. Centos知识

    1.看系统的版本: cat /etc/redhat-release 2.看内核版本: uname -r 3.查看系统是32位还是64位 uname - m 4.磁盘: 磁盘分区有主分区.扩展分区和逻辑 ...

  3. GIT和SVN教程

    各种版本控制工具的简单比较 特性 CVS SVN GIT 并发修改 支持 支持 支持 并发提交 不支持 支持 支持 历史轨迹 不支持更名 支持更名 支持更名 分布式 不支持 不支持 支持 SVN SV ...

  4. 单元测试之NUnit一

    NUnit 分三篇文章介绍,入门者可阅读文章,有基础者直接参考官方文档.初次写博客,望大家指点. 导航: 单元测试之NUnit一 单元测试之NUnit二 单元测试之NUnit三 NUnit是什么? N ...

  5. POJ 1661 暴力dp

    题意略. 思路: 很有意思的一个题,我采用的是主动更新未知点的方式,也即刷表法来dp. 我们可以把整个路径划分成横向移动和纵向移动,题目一开始就给出了Jimmy的高度,这就是纵向移动的距离. 我们dp ...

  6. Hello World 之旅

    本文记录对于下面 `hello.c` 程序在 Linux 上一次运行系统所发生的事情,内容来源于 CSAPP 第一章. #include <stdio.h> int main(int ar ...

  7. java-jsp特殊字符处理

    str = str.replaceAll("'", "''").replaceAll("\"", ""&quo ...

  8. MIT HAKMEM算法-BitCount算法

    MIT HAKMEM算法 1.问题来源 牛客刷题 问题描述: #include <iostream> using namespace std; unsigned int fib(int n ...

  9. 五大典型场景中的API自动化测试实践

    一.API 测试的基本步骤 通常来讲,API 测试的基本步骤主要包括以下三大步骤: 1.准备测试数据: 2.通过通用的或自己开发的API测试工具发起对被测API的request: 3.验证返回结果的r ...

  10. ccpc网赛 hdu6705 path(队列模拟 贪心

    http://acm.hdu.edu.cn/showproblem.php?pid=6705 这是比赛前8题过的人数第二少的题,于是就来补了,但感觉并不难啊..(怕不是签到难度 题意:给个图,给几条路 ...