第一步:加入jar包。要加入slf4j和logback的jar包,slf4j需要的jar包为slf4j-api,logback需要2个jar包(logback-classic、logback-core),如果需要保存数据库还需druid、mysql-connector-java(以mysql为例)。

    slf4j下载地址:https://www.slf4j.org/download.html

    logback下载地址:https://logback.qos.ch/download.html

    下载后解压,选择所需要的4个jar包即可。

  如果是maven项目只需依赖:

  

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency> <dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>

第二步:在项目src中加入配置文件:logback.xml(没有该文件则使用默认)(maven项目放在resources里)

我的项目结构:

第三步:使用。

如果需要用到数据库保存日志,需要建立三个表:

CREATE TABLE logging_event
(
timestmp BIGINT NOT NULL,
formatted_message TEXT NOT NULL,
logger_name VARCHAR(254) NOT NULL,
level_string VARCHAR(254) NOT NULL,
thread_name VARCHAR(254),
reference_flag SMALLINT,
arg0 VARCHAR(254),
arg1 VARCHAR(254),
arg2 VARCHAR(254),
arg3 VARCHAR(254),
caller_filename VARCHAR(254) NOT NULL,
caller_class VARCHAR(254) NOT NULL,
caller_method VARCHAR(254) NOT NULL,
caller_line CHAR(4) NOT NULL,
event_id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY
); CREATE TABLE logging_event_property
(
event_id BIGINT NOT NULL,
mapped_key VARCHAR(254) NOT NULL,
mapped_value TEXT,
PRIMARY KEY (event_id, mapped_key),
FOREIGN KEY (event_id) REFERENCES logging_event (event_id)
); CREATE TABLE logging_event_exception
(
event_id BIGINT NOT NULL,
i SMALLINT NOT NULL,
trace_line VARCHAR(254) NOT NULL,
PRIMARY KEY (event_id, i),
FOREIGN KEY (event_id) REFERENCES logging_event (event_id)
);

logback.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<!--
scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
  scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
  debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
-->
<configuration scan="true" scanPeriod="60 seconds" debug="false"> <!-- appender指定日志的输出类型,可以是控制台、文件或数据库等 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<Encoding>UTF-8</Encoding>
<encoder>
<!-- pattern指定日志的输出格式 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n</pattern>
</encoder>
</appender> <!-- 指定日志输出类型,这里指定为输出到文件-->
<appender name="file" class="ch.qos.logback.core.FileAppender">  
<!-- <file>: 指定日志的路径以及文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值 -->    
<file>demo/logs/test.log</file>
<!-- <append>:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true-->         
<append>true</append>  
<!-- <encoder>: 指定日志的输出格式-->      
<encoder>          
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n</pattern>        
</encoder>     
</appender> <!-- 配置日志输出类型为滚动日志, -->
<!-- 下面的配置为每天生成一个日志文件,保存30天的日志文件-->
<appender name="rollFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 配置滚动策略,当发生滚动时,决定RollingFileAppender的行为,TimeBasedRollingPolicy
是比较常用的一种滚动策略,它根据时间来制定滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 指定滚动生成文件的文件名,并加上日期,例如:test_2018-11-13.log -->
<fileNamePattern>demo/logs/test_%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 决定保留的归档文件的最大数量,这里只保留30天的日志文件 -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<!-- 指定日志的输出格式 -->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n</pattern>
</encoder>
</appender> <!-- 配置日志输出类型为保存到数据库,
需要在数据库中先建立logging_event、logging_event_property、logging_event_exception三张表 -->
<appender name="mysql" class="ch.qos.logback.classic.db.DBAppender">
<!-- 配置数据源 -->
<connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
<dataSource class="com.alibaba.druid.pool.DruidDataSource">
<driverClassName>com.mysql.jdbc.Driver</driverClassName>
<url>jdbc:mysql://localhost:3306/logback?useUnicode=true&amp;useSSL=true&amp;characterEncoding=utf8</url>
<username>root</username>
<password>root</password>
</dataSource>
</connectionSource>
</appender> <!-- 输出到控制台 -->
<appender name="filterConsole" class="ch.qos.logback.core.ConsoleAppender">
<!-- 配置级别过滤器,LevelFilter过滤器会根据onMatch和onMismatch属性接受或拒绝事件,
这里表示直接受INFO级别的日志-->
<filter class="ch.qos.logback.classic.filter.LevelFilter" >
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter> <!-- 配置临界值过滤器,ThresholdFilter过滤掉低于指定临界值的事件,
这里表示只接受INFO及更高级别的日志-->
<!--<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>--> <!-- 指定输出格式 -->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n</pattern>
</encoder>
</appender> <!-- logger其实表示是是root根的子级,
主要用于设置某一个包或具体的某一个类的日志打印级别 -->
<!-- 这里这是一个logger将controller包下的类在使用日子时将信息输出到控制台
additivity="false" 表示日志信息只在当前logger输出,不会延续到父级root继续输出,
默认值为true,表示在当前logger输出完成之后,继续执行root根logger的输出-->
<logger name="edu.nf.demo.Main" level="debug" additivity="true">
<appender-ref ref="console"/>
</logger>
<!-- 这里这是一个logger将controller包下的类在使用日子时将信息输出到文件 -->
<logger name="edu.nf.demo.Main" level="info" additivity="true">
<appender-ref ref="file"/>
</logger> <!-- 配置logger的根,并通过level制定输出级别
输出级别从小到大的顺序为:TRACE < DEBUG < INFO < WARN < ERROR,
例如,如果使用了info级别,则应用程序中所有低于info级别的日志信息(如debug)将不会被打印出来-->
<root level="DEBUG">
<!--引用输出类型输出类型-->
<!--<appender-ref ref="console"/>-->
<!--<appender-ref ref="file"/>-->
<!--<appender-ref ref="rollFile"/>-->
<appender-ref ref="mysql"/>
<!--<appender-ref ref="filterConsole"/>-->
</root>
</configuration>

Main:

package edu.nf.demo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory; /**
* @author hh
* @Date 2018/11/16
*/
public class Main {
private static final Logger logger = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
logger.trace("trace...");
logger.debug("debug...");
logger.info("info...");
logger.warn("warn...");
logger.error("error...");
}
}

运行结果:

控制台:

文件:

数据库:


与Spring MVC整合

  1. 依赖logback的扩展包

    <!-- https://mvnrepository.com/artifact/org.logback-extensions/logback-ext-spring -->
    <dependency>
       <groupId>org.logback-extensions</groupId>
       <artifactId>logback-ext-spring</artifactId>
       <version>0.1.4</version>
    </dependency>
  2. 在web.xml配置LogbackConfigListener,并配置logback.xml路径

    <listener>
    <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>
    </listener>
    <context-param>
    <param-name>logbackConfigLocation</param-name>
    <param-value>classpath:logback.xml</param-value>
    </context-param>

logback日志配置的更多相关文章

  1. Logback日志配置的简单使用

    Logback介绍 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和logback-access ...

  2. Spring Boot Logback日志配置

    logback的使用: Logback的默认配置 如果配置文件 logback-test.xml 和 logback.xml 都不存在,那么 logback 默认地会调用BasicConfigurat ...

  3. SpringBoot整合+logback日志配置

    本次演示的代码结构如下,基于maven,整合SpringBoot.Spring.Mybaits的SSM框架.同时测试logback日志框架的使用及配置. 1.创建maven工程,修改pom.xml文件 ...

  4. SpringBoot Logback日志配置

    Logback的配置介绍: 1.Logger.appender及layout Logger作为日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型.级别. ...

  5. springboot学习笔记:4.logback日志配置

    springboot中日志组件推荐使用logback: 由于springboot内置了logback,所以可以直接在application.properties中配置:如果要功能丰富些,则配置下log ...

  6. SpringBoot Logback 日志配置

    目录 前言 日志格式 日志输出 日志轮替 日志级别 日志分组 小结 前言 之前使用 SpringBoot 的时候,总是习惯于将日志框架切换为 Log4j2,可能是觉得比较靠谱,也可能年龄大了比较排斥新 ...

  7. Logback日志基础配置以及自定义配置

    Logback日志基础配置 logback日志配置有很多介绍,但是有几个非常基础的,容易忽略的.下面是最简单的一个配置,注意加粗的描述 <?xml version="1.0" ...

  8. 使用logback.xml配置来实现日志文件输出

    转自:http://sungang-1120.iteye.com/blog/2104296 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback- ...

  9. 日志配置logback

    在选择项目日志框架时,发现log4j的作者开发了新的日志框架,据说性能提高不少,那就选它了,不过,除了配置上有点不习惯外,最重要的一点 ,打印线程号这个功能依然没有(打印线程名这个东西是在是个鸡肋). ...

随机推荐

  1. Openssh版本升级修复漏洞

    一.由于openssh版本过低当用扫描软件检测时会出现以下漏洞: 二.解决方案是升级高版本,下面是升级的步凑. 1.安装telnet工具,因为升级过程中怕失败或者重启ssh失败.我们直接yun安装即可 ...

  2. qt deleterLater

    原文链接:浅谈 Qt 内存管理     Qt 内存管理是本文将要介绍的内容,在QT的程序中经常会看到只有new而不delete的情况,其实是因为QT有一套回收内存的机制,主要的规则如下: 1.所有继承 ...

  3. Web系统大规模并发:电商秒杀与抢购-----面试必问

    一.大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战.如果Web系统不做针对性的优化,会轻而易举地陷入到异常状态.我们现在 ...

  4. redis 系列16 持久化 RDB

    一.概述 Redis是内存数据库,一旦服务器进程退出,服务器中的数据库内存数据状态也会消失.为了解决这个问题,Redis提供了RDB 持久化功能,这个功能可以将redis在内存中的数据库状态保存到磁盘 ...

  5. Java基础19:Java集合框架梳理

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

  6. Winform 程序打包及安装

    前言 近期被公司外派到驻空调厂的项目组,支援一个TCP相关的程序对接.主要是做智能门禁系统,然后主要是统计出实时的进出人数. 我这边能作为服务端,门禁设备作为客户端,整个流程并不算复杂,根据协议来写, ...

  7. Linux基础知识第九讲,linux中的解压缩,以及软件安装命令

    目录 Linux基础知识第九讲,linux中的解压缩,以及软件安装命令 一丶Linux Mac Windows下的压缩格式简介 2.压缩以及解压缩 3.linux中的软件安装以及卸载 1.apt进行安 ...

  8. Python3.7 dataclass使用指南

    本文将带你走进python3.7的新特性dataclass,通过本文你将学会dataclass的使用并避免踏入某些陷阱. dataclass简介 dataclass的使用 定义一个dataclass ...

  9. [Go] golang的range循环遍历通道

    range循环会无限在channels上面迭代 package main import ( "fmt" "time" ) func main() { //创建一 ...

  10. Oracle day05 建表_约束

    表的创建 标准的建表语法 : CREATE TABLE [schema.] table (column datatype [DEFAULT expr], ... ); 使用子查询创建表的语法 CREA ...