三大主要元素

looger:记录日志

appender:输出目的地

layout:输出格式

必要步骤:

一.引入包:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

二.获取Logger实例

private Logger logger = LoggerFactory.getLogger(this.getClass());

PS.Logback不限制logger名,你可以随意命名logger。然而,目前已知最好的策略是以logger所在类的名字作为logger名称。

三.调用方法

logger.debug("Hello logback");

关于配置:

Logback可以通过编程式配置,或用XML格式的配置文件进行配置。
Logback采取下面的步骤进行自我配置:
1. 尝试在classpath下查找文件logback-test.xml;
2. 如果文件不存在,则查找文件logback.xml;
3. 如果两个文件都不存在,logback用BasicConfigurator自动对自己进行配置,这会导致记录输出到控制台。
第三步也是最后一步是为了在缺少配置文件时提供默认(但基本的)记录功能。

配置文件:

以<configuration>开头,后面有零个或多个<appender>元素,有零个或多个<logger>元素,有最多一个<root>元素。

<logger>节点:因为每个用<logger>元素声明的logger,首先会移除所有appender,所以如果logger没有引用任何appender,就会失去所有appender。这也是在配置文件里配置logger的用途之一,用于主动声明level或者屏蔽appender。注意,<logger>节点里配置的日志是不会受<root>节点的level影响的。

<logger>节点:由于appender的累加性,<logger>节点里所有的内容会再输出到它的祖先<root>里一遍,可以设置additivity参数关闭它。

Appender:

class属性指定appender类的全限定名,包括但不限于以下几种:

“ConsoleAppender”:把事件添加到控制台,更准确地说是System.out或System.err,默认为前者。

“FileAppender”:把记录事件添加到文件。目标文件通过File选项指定。如果文件已经存在,则根据Append属性追加或清空文件。

“RollingFileAppender”:继承FileAppender,能够滚动记录文件。例能先记录到某个文件当符合某个条件时,变成记录到其他文件。

“SocketAppender”:通过序列化ILoggingEvent实例把记录输出到远程实体。

“JMSAppenderBase”:与SocketAppender类似,只是基于JMS API而不是TCP套接字。JMS即Java消息系统API为面向消息的中间件(MOM)产品提供抽象层。

“SMTPAppender”:在固定大小的缓冲里积累记录时间,当用户指定的事件发生后,就通过email发出这些事件。

“DBAppender”:DBAppender把记录事件写入数据库的三张表。

“SyslogAppender”:syslog协议很简单:syslog发送者发送一小段信息到syslog服务器。

“SiftingAppender”:SiftingAppender能按照给定的运行时属性,对记录进行分离或筛选。能根据用户会话对记录事件进行分离,一个用户一个文件。

“自定义Appender”:自定义

基本概念:

Appender:Appender类可被视为输出目的地的。Appender包含许多不同类型的目的地,包括控制台、文件、Syslog、TCP套接字、JMS和其他。

有效级别:trace<debug<info<warn<error

Appender叠加性:记录语句的输出会发送给logger及其祖先的全部appender。设置logger的additivity为false,则可以取消这种默认的appender累积行为。

过滤器(Filter):Logback的过滤器基于三值逻辑(ternary logic),允许把它们组装或成链,从而组成任意的复合过滤策略。

常用方法:

StatusPrinter.pring():打印logback的内部状态。在诊断与logback相关的问题时,logback的内部状态信息会非常有用。

logger.isDebugEnabled():当logger的debug级别被禁用时,这个方法可以避免参数构造带来的性能消耗。另外,利用SLF4J的参数化记录可以避免这种消耗。 x.debug("Entry number: {} is {}", i, entry[i])。

三大模块:

logback-core:是其他两个模块的基础

logback-classic:扩展了core模块,此模块相当于log4j的显著改进版。直接实现了SLF4J API,因此你可在logback与其他记录系统如log4j之间轻松互相切换。

logback-access:此模块可与Jetty或者Tomcat进行集成,提供了非常丰富而强大的通过HTTP访问日志的功能。

logbakc的迁移:由于 logback-classic强烈建议使用SLF4J作为客户端日记系统实现,如果需要切换到log4j或者其他,你只需要替换一个jar包即可,不需要去改变那些通过SLF4J API 实现的代码。这可以大大减少更换日记系统的工作量。

关于日志的一些总结:

1.使用日志框架管理应用日志的好处:方便对日志进行管理,快速进行问题定位,应用日志可以根据功能划分多个,定义不同的日志级别。

2.启动日志和应用日志的区别:启动日志一般指像jboss这种应用容器自带的日志(jboss_stdout.log),里面的记录就像本地eclipse控制台里的那些打印,有应用从开始到结束的所有记录。而应用日志则是记录应用运行过程中的行为,由日志框架所控制,多为程序员主动记录的,所以更有针对性内容也更丰富。

logback使用笔记的更多相关文章

  1. logback实践笔记

    前言 ​ 每次看公司配置好的logback文件的时候,都不知道什么意思.导致有的时候,一些项目发到测试环境的时候,有的项目没有打印日志,自己都不知道哪里有问题.所以自己新建一个springboot项目 ...

  2. Logback 学习笔记

    来源:http://webinglin.github.io/2015/06/04/Logback-%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/ Logback背景 Log ...

  3. Logback学习笔记

    Logback介绍 Logback 分为三个模块:Core.Classic 和 Access.Core模块是其他两个模块的基础. Classic模块扩展了core模块. Classic模块相当于log ...

  4. slf4j,log4j,logback 初步使用

    log4j,slf4j,logback简单介绍见 LogBack简易教程 Logback浅析 简单的将,slf4j是一个日志的框架,有各种日志的接口,但是并不包含实际的写日志的方法. log4j,lo ...

  5. logback中logger详解

    前言 logback实践笔记 ​ 上一篇主要对root进行了实践总结,现在基于上一篇中的springboot代码环境对logback.xml中的logger来进行实践和自己遇到的坑. logger简介 ...

  6. logback笔记

    logback的使用 logback是什么? Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和l ...

  7. logback&slf4j学习笔记

    1.Slf4j 1.1.Slf4j简介 SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统.实际上,SLF ...

  8. 开发笔记-记一个基础logback配置

    <?xml version="1.0" encoding="UTF-8"?> <configuration scan="true&q ...

  9. 后端——框架——日志框架——logback——《官网》阅读笔记——第一章节

    第一章节搭建了logback日志框架的环境,演示了Hello World的示例,并详细分析了示例. 搭建日志框架的过程非常简单,只需要在项目的classpath上添加以下三个jar包,logback- ...

随机推荐

  1. 关于jQuery对象与DOM对象

    今天遇到了关于jQuery对象与dom对象的区分问题.具体如下:对于元素<span id="aa" class="aa">hyz</span& ...

  2. fail-fast机制

    在JDK的Collection中我们时常会看到类似于这样的话: 例如,ArrayList: 注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证.快速失 ...

  3. 简单的monkey使用

    先推荐大家看一篇http://www.cnblogs.com/wfh1988/archive/2010/11/16/1878224.html,里面有一些命令的使用 简单在说就是象猴子一样乱点,为了测试 ...

  4. 【转】MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突

    [转]MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突 在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体 ...

  5. Java多线程并发

    http://wangjianwei866.blog.163.com/blog/static/9295823201231665319314/ 基于以上网文,调整了一下格式,修改了一些标点和拼写错误. ...

  6. Extjs3 Combo实现百度搜索查询

    在Extjs中实现Combo手输模糊筛选出下拉框数据.之前一直利用的Combo的keyup来实时的请求数据库进行查询.最近发现了一个更好的方式:只需要引用一个ComboBoxQuery Ext.ns( ...

  7. Android调用.net的webservice服务器接收参数为空的情况

    问题描述:安卓开发中,用Android调用.net开发的wenService时候,从Android客户端传递参数到服务器端,服务器端接收为空 解决方法: 1.设置envelope.dotNet = t ...

  8. VMWare中安装CentOS6.6不能上网的解决办法

    1.首先在虚拟机中将网络配置设置成NAT 2.在windows系统,我的电脑-管理-服务 中开启VMware NAT service和VMware DHCP service. 3.在CentOS里面打 ...

  9. Docker Machine, Compose, and Swarm: How They Work Together

    The three tools are now neatly packaged into what’s called the Docker Toolbox. Docker Machine1/ crea ...

  10. 第十一篇、HTML5隐藏播放器播放背景音乐

    html5添加网页背景音乐  一个客户要求给网站添加一个背景音乐,我用的是html5添加网页背景音乐的代码,在此记录一下以后有用. html5方法一:<audio autoplay=" ...