第一步:加入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项目只需依赖:

  

  1. <dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
    </dependency>
  2.  
  3. <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里)

我的项目结构:

第三步:使用。

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

  1. CREATE TABLE logging_event
  2. (
  3. timestmp BIGINT NOT NULL,
  4. formatted_message TEXT NOT NULL,
  5. logger_name VARCHAR(254) NOT NULL,
  6. level_string VARCHAR(254) NOT NULL,
  7. thread_name VARCHAR(254),
  8. reference_flag SMALLINT,
  9. arg0 VARCHAR(254),
  10. arg1 VARCHAR(254),
  11. arg2 VARCHAR(254),
  12. arg3 VARCHAR(254),
  13. caller_filename VARCHAR(254) NOT NULL,
  14. caller_class VARCHAR(254) NOT NULL,
  15. caller_method VARCHAR(254) NOT NULL,
  16. caller_line CHAR(4) NOT NULL,
  17. event_id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY
  18. );
  19.  
  20. CREATE TABLE logging_event_property
  21. (
  22. event_id BIGINT NOT NULL,
  23. mapped_key VARCHAR(254) NOT NULL,
  24. mapped_value TEXT,
  25. PRIMARY KEY (event_id, mapped_key),
  26. FOREIGN KEY (event_id) REFERENCES logging_event (event_id)
  27. );
  28.  
  29. CREATE TABLE logging_event_exception
  30. (
  31. event_id BIGINT NOT NULL,
  32. i SMALLINT NOT NULL,
  33. trace_line VARCHAR(254) NOT NULL,
  34. PRIMARY KEY (event_id, i),
  35. FOREIGN KEY (event_id) REFERENCES logging_event (event_id)
  36. );

logback.xml配置:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
  4.   scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
  5.   debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
  6. -->
  7. <configuration scan="true" scanPeriod="60 seconds" debug="false">
  8.  
  9. <!-- appender指定日志的输出类型,可以是控制台、文件或数据库等 -->
  10. <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
  11. <Encoding>UTF-8</Encoding>
  12. <encoder>
  13. <!-- pattern指定日志的输出格式 -->
  14. <pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n</pattern>
  15. </encoder>
  16. </appender>
  17.  
  18. <!-- 指定日志输出类型,这里指定为输出到文件-->
  19. <appender name="file" class="ch.qos.logback.core.FileAppender">  
  20. <!-- <file>: 指定日志的路径以及文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值 -->    
  21. <file>demo/logs/test.log</file>
  22. <!-- <append>:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true-->         
  23. <append>true</append>  
  24. <!-- <encoder>: 指定日志的输出格式-->      
  25. <encoder>          
  26. <pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n</pattern>        
  27. </encoder>     
  28. </appender>
  29.  
  30. <!-- 配置日志输出类型为滚动日志, -->
  31. <!-- 下面的配置为每天生成一个日志文件,保存30天的日志文件-->
  32. <appender name="rollFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
  33. <!-- 配置滚动策略,当发生滚动时,决定RollingFileAppender的行为,TimeBasedRollingPolicy
  34. 是比较常用的一种滚动策略,它根据时间来制定滚动策略-->
  35. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  36. <!-- 指定滚动生成文件的文件名,并加上日期,例如:test_2018-11-13.log -->
  37. <fileNamePattern>demo/logs/test_%d{yyyy-MM-dd}.log</fileNamePattern>
  38. <!-- 决定保留的归档文件的最大数量,这里只保留30天的日志文件 -->
  39. <maxHistory>30</maxHistory>
  40. </rollingPolicy>
  41. <!-- 指定日志的输出格式 -->
  42. <encoder>
  43. <pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n</pattern>
  44. </encoder>
  45. </appender>
  46.  
  47. <!-- 配置日志输出类型为保存到数据库,
  48. 需要在数据库中先建立logging_event、logging_event_property、logging_event_exception三张表 -->
  49. <appender name="mysql" class="ch.qos.logback.classic.db.DBAppender">
  50. <!-- 配置数据源 -->
  51. <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
  52. <dataSource class="com.alibaba.druid.pool.DruidDataSource">
  53. <driverClassName>com.mysql.jdbc.Driver</driverClassName>
  54. <url>jdbc:mysql://localhost:3306/logback?useUnicode=true&amp;useSSL=true&amp;characterEncoding=utf8</url>
  55. <username>root</username>
  56. <password>root</password>
  57. </dataSource>
  58. </connectionSource>
  59. </appender>
  60.  
  61. <!-- 输出到控制台 -->
  62. <appender name="filterConsole" class="ch.qos.logback.core.ConsoleAppender">
  63. <!-- 配置级别过滤器,LevelFilter过滤器会根据onMatch和onMismatch属性接受或拒绝事件,
  64. 这里表示直接受INFO级别的日志-->
  65. <filter class="ch.qos.logback.classic.filter.LevelFilter" >
  66. <level>INFO</level>
  67. <onMatch>ACCEPT</onMatch>
  68. <onMismatch>DENY</onMismatch>
  69. </filter>
  70.  
  71. <!-- 配置临界值过滤器,ThresholdFilter过滤掉低于指定临界值的事件,
  72. 这里表示只接受INFO及更高级别的日志-->
  73. <!--<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  74. <level>INFO</level>
  75. </filter>-->
  76.  
  77. <!-- 指定输出格式 -->
  78. <encoder>
  79. <pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n</pattern>
  80. </encoder>
  81. </appender>
  82.  
  83. <!-- logger其实表示是是root根的子级,
  84. 主要用于设置某一个包或具体的某一个类的日志打印级别 -->
  85. <!-- 这里这是一个logger将controller包下的类在使用日子时将信息输出到控制台
  86. additivity="false" 表示日志信息只在当前logger输出,不会延续到父级root继续输出,
  87. 默认值为true,表示在当前logger输出完成之后,继续执行root根logger的输出-->
  88. <logger name="edu.nf.demo.Main" level="debug" additivity="true">
  89. <appender-ref ref="console"/>
  90. </logger>
  91. <!-- 这里这是一个logger将controller包下的类在使用日子时将信息输出到文件 -->
  92. <logger name="edu.nf.demo.Main" level="info" additivity="true">
  93. <appender-ref ref="file"/>
  94. </logger>
  95.  
  96. <!-- 配置logger的根,并通过level制定输出级别
  97. 输出级别从小到大的顺序为:TRACE < DEBUG < INFO < WARN < ERROR,
  98. 例如,如果使用了info级别,则应用程序中所有低于info级别的日志信息(如debug)将不会被打印出来-->
  99. <root level="DEBUG">
  100. <!--引用输出类型输出类型-->
  101. <!--<appender-ref ref="console"/>-->
  102. <!--<appender-ref ref="file"/>-->
  103. <!--<appender-ref ref="rollFile"/>-->
  104. <appender-ref ref="mysql"/>
  105. <!--<appender-ref ref="filterConsole"/>-->
  106. </root>
  107. </configuration>

Main:

  1. package edu.nf.demo;
  2.  
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5.  
  6. /**
  7. * @author hh
  8. * @Date 2018/11/16
  9. */
  10. public class Main {
  11. private static final Logger logger = LoggerFactory.getLogger(Main.class);
  12. public static void main(String[] args) {
  13. logger.trace("trace...");
  14. logger.debug("debug...");
  15. logger.info("info...");
  16. logger.warn("warn...");
  17. logger.error("error...");
  18. }
  19. }

运行结果:

控制台:

文件:

数据库:


与Spring MVC整合

  1. 依赖logback的扩展包

    1. <!-- 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路径

    1. <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. PHP算法之斐波那契数列(递归)

    /*斐波那契数列 源代码分析 f(x) = 1 ; 当 x < 2 ; f(x) = f(x-1)+f(x-2); 当 x >= 2 ; 通项式为:fn ={((1+根号5)/2)^n-( ...

  2. Spring之AOP流程解析(ProxyFactory)

    本节我们从ProxyFactory开始分析.该类有几个比较重要的方法——addAdvice.addAdvisor.getProxy,其中最后一个方法是我们本节的重点.前两个方法都是向ProxyFact ...

  3. python高级-生成器(17)

    1. 什么是⽣成器 通过列表⽣成式,我们可以直接创建⼀个列表.但是,受到内存限制,列表容量肯定是有限的.⽽且,创建⼀个包含100万个元素的列表,不仅占⽤很⼤的存储空间,如果我们仅仅需要访问前⾯⼏个元素 ...

  4. .NET Core实战项目之CMS 第七章 设计篇-用户权限极简设计全过程

    写在前面 这篇我们对用户权限进行极简设计并保留其扩展性.首先很感谢大家的阅读,前面六章我带着大家快速入门了ASP.NET Core.ASP.NET Core的启动过程源码解析及配置文件的加载过程源码解 ...

  5. 手工在Docker for mac上安装Kubernetes

    此文发布时间比较早,当前已经有更好的办法,请参考网页: https://github.com/AliyunContainerService/k8s-for-docker-desktop 以下为原文 通 ...

  6. 【Vue笔记】-- 详解vue生命周期

    针对于Vue的生命周期进行详细的说明,方面加深对各个方法的引用. 引言: 前几天重新回顾vue官网时,看到vue的生命周期,想着自己用vue开发了快一年了,就总结总结vue知识,再次加深自己对vue的 ...

  7. EF架构~TransactionScope与SaveChanges的关系

    回到目录 TransactionScope是.net环境下的事务,可以提升为分布式事务,这些知识早在很久前就已经说过了,今天不再说它,今天主要谈谈Savechanges()这个方法在Transacti ...

  8. windows powershell一些操作

  9. xamarin.forms之使用CarouselView插件模仿网易新闻导航

    在APP中基本都能见到类似网易.今日头条等上边横向导航条,下边是左右滑动的页面,之前做iOS的时候模仿实现过,https://github.com/ywcui/ViewPagerndicator,在做 ...

  10. [转]eShopOnContainers 看微服务 ①:总体概览

    本文转自:https://www.cnblogs.com/tianyamoon/p/10081177.html 一.简介 eShopOnContainers是一个简化版的基于.NET Core和Doc ...