logback是log4j作者推出的新日志系统,原生支持slf4j通用日志api,允许平滑切换日志系统,并且对简化应用部署中日志处理的工作做了有益的封装。

官方地址为:http://logback.qos.ch/

Logback日志需要依赖一下jar包:

slf4j-api-1.6.0.jar

logback-core-0.9.21.jar

logback-classic-0.9.21.jar

logback-access-0.9.21.jar

主配置文件为logback.xml,放在src目录下或是WEB-INF/classes下,logback会自动加载

logback.xml的基本结构如下:

1 <?xml version="1.0" encoding="UTF-8"?>
2 <configuration>
3 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
4     <encoder>
5       <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
6     </encoder>
7   </appender>
8   <root level="DEBUG"><appender-ref ref="STDOUT" /></root>
9 </configuration>  

logback.xml的基本配置信息都包含在configuration标签中,需要含有至少一个appender标签用于指定日志输出方式和输出格式,root标签为系统默认日志进程,通过level指定日志级别,通过appender-ref关联前面指定顶的日志输出方式。

例子中的appender使用的是ch.qos.logback.core.ConsoleAppender类,用于对控制台进行日志输出

其中encoder标签指定日志输出格式为“时间 线程 级别 类路径 信息”

logback的文件日志输出方式还提供多种日志分包策略

1.文件日志

 1 <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
 2     <file>E:/logs/mylog.txt</file>
 3     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 4       <!-- rollover daily -->
 5       <fileNamePattern>E:/logs/mylog-%d{yyyy-MM-dd_HH-mm}.%i.log</fileNamePattern>
 6       <maxHistory>5</maxHistory>
 7       <timeBasedFileNamingAndTriggeringPolicy
 8             class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
 9         <!-- or whenever the file size reaches 100MB -->
10         <maxFileSize>100MB</maxFileSize>
11       </timeBasedFileNamingAndTriggeringPolicy>
12     </rollingPolicy>
13     <encoder>
14       <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n</pattern>
15     </encoder>
16   </appender  

文件日志输出采用的ch.qos.logback.core.rolling.RollingFileAppender类,它的基本属性包括<file>指定输入文件路径,encoder指定日志格式。其中,rollingPolicy标签指定的是日志分包策略,ch.qos.logback.core.rolling.TimeBasedRollingPolicy类实现的是基于时间的分包策略,分包间隔是根据fileNamePattern中指定的事件最小单位,比如例子中的%d{yyyy-MM-dd_HH-mm}的最小事件单位为分,它的触发方式就是1分钟,策略在每次想日志中添加新内容时触发,如果满足条件,就将mylog.txt复制到E:/logs/目录并更名为mylog-2010-06-22_13-13.1.log,并删除原mylog.txt。maxHistory的值为指定E:/logs目录下存在的类似mylog-2010-06-22_13-13.1.log文件的最大个数,当超过时会删除最早的文件。此外,策略还可以互相嵌套,比如本例中在时间策略中又嵌套了文件大小策略,ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP实现对单文件大小的判断,当超过maxFileSize中指定大大小时,文件名中的变量%i会加一,即在不满足时间触发且满足大小触发时,会生成mylog-2010-06-22_13-13.1.log和mylog-2010-06-22_13-13.2.log两个文件。

2.数据库日志

 1 <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
 2     <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
 3        <dataSource
 4         class="com.mchange.v2.c3p0.ComboPooledDataSource">
 5       <driverClass>com.<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库" target='_blank' style='color:#df3434; font-weight:bold;'>MySQL</a>.jdbc.Driver</driverClass>
 6       <url>jdbc:mysql://127.0.0.1:3306/databaseName</url>
 7       <user>root</user>
 8       <password>root</password>
 9       </dataSource>
10     </connectionSource>
11   </appender>  

数据库输出使用ch.qos.logback.classic.db.DBAppender类,数据源支持c3p0数据连接池,例子中使用的MySql,其他配置方式请参考官方文档。

使用数据库输出需要在数据库中建立3个表,建表脚本如下

 1 # Logback: the reliable, generic, fast and flexible logging framework.
 2 # Copyright (C) 1999-2010, QOS.ch. All rights reserved.
 3 #
 4 # See http://logback.qos.ch/license.html for the applicable licensing
 5 # conditions.
 6 # This SQL script creates the required tables by ch.qos.logback.classic.db.DBAppender.
 7 #
 8 # It is intended for MySQL databases. It has been tested on MySQL 5.1.37
 9 # on <a href="http://lib.csdn.net/base/linux" class='replace_word' title="Linux知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Linux</a>
10
11 BEGIN;
12 DROP TABLE IF EXISTS logging_event_property;
13 DROP TABLE IF EXISTS logging_event_exception;
14 DROP TABLE IF EXISTS logging_event;
15 COMMIT;
16
17 BEGIN;
18 CREATE TABLE logging_event
19   (
20     timestmp         BIGINT NOT NULL,
21     formatted_message  TEXT NOT NULL,
22     logger_name       VARCHAR(254) NOT NULL,
23     level_string      VARCHAR(254) NOT NULL,
24     thread_name       VARCHAR(254),
25     reference_flag    SMALLINT,
26     arg0              VARCHAR(254),
27     arg1              VARCHAR(254),
28     arg2              VARCHAR(254),
29     arg3              VARCHAR(254),
30     caller_filename   VARCHAR(254) NOT NULL,
31     caller_class      VARCHAR(254) NOT NULL,
32     caller_method     VARCHAR(254) NOT NULL,
33     caller_line       CHAR(4) NOT NULL,
34     event_id          BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY
35   );
36 COMMIT;
37 BEGIN;
38 CREATE TABLE logging_event_property
39   (
40     event_id          BIGINT NOT NULL,
41     mapped_key        VARCHAR(254) NOT NULL,
42     mapped_value      TEXT,
43     PRIMARY KEY(event_id, mapped_key),
44     FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
45   );
46 COMMIT;
47 BEGIN;
48 CREATE TABLE logging_event_exception
49   (
50     event_id         BIGINT NOT NULL,
51     i                SMALLINT NOT NULL,
52     trace_line       VARCHAR(254) NOT NULL,
53     PRIMARY KEY(event_id, i),
54     FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
55   );
56 COMMIT;  

3.其他

此外logback还提供基于mail,基于jmx等多种日志输出方式,你也可以通过继承ch.qos.logback.core.AppenderBase自己写appender实现

除了使用默认的日志主线程<root>外,还可以通过<logger>标签定制其他日志线程如:

1 <logger name="com.test" level="DEBUG">
2         <appender-ref ref="STDOUT" />
3 </logger>  

其中name指定线程针对的包路径,level是日志级别,<appender-ref>定义使用那种appender。

例如要实现打印jdbc提交的sql,可以加入如下logger:

1 <logger name="Java.sql.Connection" level="DEBUG"><appender-ref ref="STDOUT" /></logger>

完整的logback.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <configuration>
 3   <!-- log output to file  -->
 4   <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
 5     <file>E:/logs/mylog.txt</file>
 6     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 7       <!-- rollover daily -->
 8       <fileNamePattern>E:/logs/mylog-%d{yyyy-MM-dd_HH-mm}.%i.log</fileNamePattern>
 9       <maxHistory>5</maxHistory>
10       <timeBasedFileNamingAndTriggeringPolicy
11             class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
12         <!-- or whenever the file size reaches 100MB -->
13         <maxFileSize>100MB</maxFileSize>
14       </timeBasedFileNamingAndTriggeringPolicy>
15     </rollingPolicy>
16     <encoder>
17       <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n</pattern>
18     </encoder>
19   </appender>
20 <!-- log output to console  -->
21 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
22     <encoder>
23       <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
24     </encoder>
25   </appender>
26 <!--  log output to db-->
27 <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
28     <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
29        <dataSource
30         class="com.mchange.v2.c3p0.ComboPooledDataSource">
31       <driverClass>com.mysql.jdbc.Driver</driverClass>
32       <url>jdbc:mysql://127.0.0.1:3306/tunneldb</url>
33       <user>root</user>
34       <password>123123</password>
35       </dataSource>
36     </connectionSource>
37   </appender>
38
39     <logger name="com.ttt.ttt" level="DEBUG">
40         <appender-ref ref="STDOUT" />
41     </logger>
42
43     <logger name="java.sql.Connection" level="DEBUG"><appender-ref ref="STDOUT" /></logger>
44      <!--  打印sql
45     <logger name="java.sql.Statement" level="DEBUG"><appender-ref ref="STDOUT" /></logger>
46     <logger name="java.sql.PreparedStatement" level="DEBUG"><appender-ref ref="STDOUT" /></logger>
47
48     <logger name="java.sql.ResultSet" level="DEBUG"><appender-ref ref="STDOUT" /></logger>
49     -->
50   <root level="DEBUG"><appender-ref ref="ROLLING" /></root>
51 </configuration>  

总结:logback提供了丰富而高效的日志输出方式,并通过滚动策略,将实施时复杂的备份策略整合,极大的简化的部署成本,有兴趣的朋友可已考虑放到自己的项目里.官方提供了几百页的文档,内容相当详细,更多的内容请参照官方文档。

原文:http://blog.csdn.net/jiaincs/article/details/5686287

转载于:https://www.cnblogs.com/chenfeng1122/p/6179376.html

Logback日志系统配置攻略相关推荐

  1. Database之SQLSever:SQLSever数据库管理(GUI法/SQL语句命令法两种方法实现备份(完整备份、差异备份、日志备份)、还原、删除、修改数据库等案例)之详细攻略

    Database之SQLSever:SQLSever数据库管理(GUI法/SQL语句命令法两种方法实现备份(完整备份.差异备份.日志备份).还原.删除.修改数据库等案例)之详细攻略 目录 数据库管理 ...

  2. Python语言学习之字母L开头函数使用集锦:logging日志用法之详细攻略

    Python语言学习之字母L开头函数使用集锦:logging日志用法之详细攻略 目录 logging日志用法之详细攻略 logging日志用法之详细攻略 K Llogging.basicConfig( ...

  3. 一款提供 dota2 游戏相关资讯,视频,攻略,更新日志的 Android App,基于 RetrofitRxJavaMvpGreenDao

    Dota2Helper 项目地址:uin3566/Dota2Helper 简介:一款提供 dota2 游戏相关资讯,视频,攻略,更新日志的 Android App,基于 Retrofit&Rx ...

  4. 零基础学习Java培训有什么攻略

    零基础学习Java培训有什么攻略?java是主流编程语言之一,我们在学习Java的时候需要制定Java学习路线图,Java涉及到的知识点非常的多,我们该从何学起呢?怎么系统的学习呢?来看看下面的详细介 ...

  5. 提高(微)服务安全的非完全攻略

    [编者按]千里之堤毁于蚁穴.服务安全有点类似于机场安检.工作人员会检查每一个人,禁止他们带某些东西上飞机等等,尽管99.9999%的人都不会劫持飞机.而机场采取的所有措施针对的都是0.0001%的情况 ...

  6. SAP HANA Cloud Connector图文全攻略

    SAP HANA Cloud Connector图文全攻略 http://mp.weixin.qq.com/s?__biz=MjM5OTI2MjgyMA==&mid=2651785635&am ...

  7. Win7开机加速全攻略四:系统服务优化

    IT168 实用技巧]如何加快Windows 7系统的开机速度一直都是大家热议的问题,网络中流传的方法也很多,本站为大家整理了一些加快Windows 7系统的开机速度的方法,在接下去的几天中,将陆续分 ...

  8. Skywalking UI使用攻略

    文章目录 一.前言 二.指标术语解释 三.指标盘界面通识 四.各指标模块介绍 4.1[仪表盘]模块 4.1.1 APM监控 4.1.1.1 APM - Global 4.1.1.2 APM - Ser ...

  9. (建议收藏)服务器宕机,效率排查攻略V2.0

    回复[面试题]获取2021年最新java面试题合集- 遇到服务器故障,问题出现的原因很少可以一下就想到.我们基本上都会从以下步骤入手: 一.尽可能搞清楚问题的前因后果 不要一下子就扎到服务器前面,你需 ...

最新文章

  1. 在Scrapy中使用Chrome中的cookie
  2. 台北到淡水版Firefox玩网页游戏黑屏
  3. 数学建模matlab imread,《matlab数学建模方法与实践》第三章 数据的处理
  4. opengl加载显示3DS模型3DS类型文件
  5. pythonargmaxaxis1_keras.argmax中axis = -1的含义是什么?
  6. MoinMoin Wiki 1.7优化与维护经验
  7. 3-5:常见任务和主要工具之归档和备份
  8. vue element table
  9. topcoder srm 708 div1 -3
  10. CSS选择器、优先级与匹配原理
  11. 电脑常用良心软件推荐!!!
  12. 数组求极值——Java
  13. 二维码内置图片,并且把二维码放在图片指定位置上,画字,设置字本地样式,二维码批量生成
  14. nodejs代码将word转成图片
  15. atan(y/x)与atan2(y,x)的区别
  16. Java字节简单介绍
  17. 关于Visual Studio 2008调试的一些经验以及错误(0xXXXXXXXX处最可能的异常: 0xC0000005: 写入位置 0x00000014 时发生访问冲突)
  18. 在公共服务器上搭建python虚拟环境
  19. Java项目:SSM药品进货销售仓储信息管理系统
  20. 关于keil的一些基础知识(持续更新)

热门文章

  1. nginx安装与配置详解
  2. java的CountDownLatch使用
  3. 随机采样方法整理与讲解(MCMC、Gibbs Sampling等)
  4. python把数据写入excel_Python读写sqlite3数据库的方法并且将数据写入Excel的实例详解...
  5. 用Java代码实现日志记录器_如何在此简单的Java日志记录实现中附加到日志文件? - java...
  6. 我在神策做研发丨做冲在前方的第一方队,造中国最好的开源 SDK
  7. 杭州成都场「PPT 下载」新鲜出炉 | 神策 2019 数据驱动大会
  8. spring框架所有包解释
  9. 成熟的夜间模式解决方案
  10. Scala学习笔记(7)-函数式对象