SlideShare a Scribd company logo
1 of 3
Download to read offline
OSSEZTEC http://cwiki.ossez.com
P1 Copyright © 2014, OSSEZ INC
logback 介绍
The morale effects are startling. Enthusiasm jumps when there is a running system, even a simple one. Efforts redouble when the first picture from
a new graphics software system appears on the screen, even if it is only a rectangle. One always has, at every stage in the process, a working
system. I find that teams can grow much more complex entities in four months than they can build.
—FREDERICK P. BROOKS, JR.,The Mythical Man-Month
什么是 logback
Logback为取代log4j而生。
Logback由log4j的创立者Ceki
Gülcü设计。以十多年设计工业级记录系统的经验为基础,所创建的logback比现有任何记录系统更快、占用资源更少,有时差距非常大。
Logback提供独特而实用的特性,比如Marker、参数化记录语句、条件化堆栈跟踪和强大的事件过滤功能。以上列出的仅仅是logbook实用特性的一
小部分。
对于自身的错误报告,logback依赖状态(Status)对象,状态对象极大地简化了故障查找。你也许想在上下文中使用状态对象而不是记录。
更重要的是,logback 提供了其他日志系统所没有的 offers独特并且有用 的功能。
第一步
为了能够运行本章节内容中使用的示例,你需要确定你的 classpath 中已经包含有必须的包。
请参考 中的内容获得更多的一些信息和帮助。设置页面
必要条件
Logback-classic 模块需要 和 。更多的有可能还需要 包,这些包需要在 classpath 中设置。slf4j-api.jar logback-core.jar logback-classic.jar
logback-*.jar文件是 logback 分发包的一部分。这些包是随 一起发布的,你可以在 SLF4J 的分发包中找到所需要的的 jar 文件。SLF4J
现在让我们开始体验logback。
代码示例 1.1:日志的基本模板( )logback-examples/src/main/java/chapters/introduction/HelloWorld1.java
如果你可以访问 GitHub 或者已经将测试代码下载到本地了,你可以直接在本地运行。
GitHub 的代码地址为:https://github.com/qos-ch/logback/blob/master/logback-examples/src/main/java/chapters/introduction/HelloWorld1.jav
a
package chapters.introduction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld1 {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger("chapters.introduction.HelloWorld1");
logger.debug("Hello world.");
}
}
HelloWorld1类中定义了 包。 同时导入了SLF4J API 定义的 Logger 类和 LoggerFactory 类,更准确的说法是定义在chapters.introduction
org.slf4j 包里的两个类。
main()方法的第一行里,调用LoggerFactory类的静态方法getLogger取得一个Logger实例,将该实例赋值给变量logger。
这个logger被命名为“chapters.introduction.HelloWorld1”。main方法继续调用这个logger的debug方法并传递参数“Hello
OSSEZTEC http://cwiki.ossez.com
P2 Copyright © 2014, OSSEZ INC
这个logger被命名为“chapters.introduction.HelloWorld1”。main方法继续调用这个logger的debug方法并传递参数“Hello
world”。我们称之为main方法包含了一条消息是“Hello world”、级别是DEBUG的记录语句。
注意上面的例子并没有引用任何logback的类。多数情况下,只要涉及到记录,你只需要引用SLF4J的类。因此在绝大多数情况下,你的类只导入SLF
4J的API,基本可以忽略logback的存在。
你可以通过下面的命令运行你的第一个简单程序 :chapters.introduction.HelloWorld1
java chapters.introduction.HelloWorld1
运行后会在控制台输出下面的一行文字。得益于logback提供了默认配置策略,当没有发现默认配置文件时,logback会为根(root)
logger添加一个ConsoleAppender。
20:49:07.962 [main] DEBUG chapters.introduction.HelloWorld1 - Hello world.
Eclipse 环境下运行的结果如下:
logback
可以通过内置的状态系统来报告其内部状态。通过StatusManager组件可以访问logback生命期内发生的重要事件。目前,我们调用StatusPrinter类
的print()方法来打印logback的内部状态。
代码示例:打印日志状态( )logback-examples/src/main/java/chapters/introduction/HelloWorld2.java
package chapters.introduction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.util.StatusPrinter;
public class HelloWorld2 {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger("chapters.introduction.HelloWorld2");
logger.debug("Hello world.");
// print internal state
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
StatusPrinter.print(lc);
}
}
运行 程序后将会产生下面的输出:HelloWorld2
OSSEZTEC http://cwiki.ossez.com
P3 Copyright © 2014, OSSEZ INC
1.
2.
3.
12:49:22.203 [main] DEBUG chapters.introduction.HelloWorld2 - Hello world.
12:49:22,076 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
12:49:22,078 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
12:49:22,093 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
12:49:22,093 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Setting up default configuration.
Eclipse 环境下面的运行输出:
Logback说它没有找到配置文件 和 (稍后解释),于是用默认策略进行配置,即用一个基本的logback-test.xml logback.xml
ConsoleAppender。
Appender类可被视为输出目的地的。Appender包含许多不同类型的目的地,包括控制台、文件、Syslog、TCP套接字、JMS和其他。用户可以很容
易地自定义Appender
当发生错误时,logback将自动在控制台上打印其内部状态。
之前的两个示例相当简单,大型程序里真实记录志情况也不会有太大区别。记录系统的基本模式不会改变,可能改变的是配置过程。也许你想按照
自己的需要来定制或配置logback,Logback 的配置章节将会会讨论配置 logback。
在上面的例子里,我们调用StatusPrinter.pring()方法来打印logback的内部状态。在诊断与logback相关的问题时,logback的内部状态信息会非常有
用。
在应程序里启用记录的三个必需步骤如下:
配置logback环境。方法有繁有简,稍后讨论。
在每个需要执行记录的类里,调用 org.slf4j.LoggerFactory 类的 getLogger() 方法获取一个 Logger 实例,以当前类名或类本身作为参数。
调用取得的logger实例的打印方法,即debug()、info()、warn()和error(),把记录输出到配置里的各个 Appender。
构建 logback
作为一个构建工具,Logback 依赖于构建工具 , Maven 是一个被广泛使用的构建工具。Maven
一旦你成功安装 Maven,构建 Logback 项目,包括所有的模块应该是已经非常容易的事情,你可以在 Logback 的安装目录下运行 Maven
的构建命令mvn install,Maven 将会自动下载所有需要的包。
Logback 发行包包含完整的源代码,你可以修改源代码,创建自己的版本。你还可以在遵守 遵守LGPL或EPL 的前提下发布修改过的版本。
在 IDE 环境下构建 Logback,请参考页面 中的内容。classpath 设置页面
基本上只要你有正确的 Maven 环境,重构 Logback 一般来说不是什么问题。我们测试过在 JDK 1.7 Windows8 的环境下没有任何问题。
在老的手册中,还有一个有关环境兼容性的表格,在本手册中将这部分内容忽略了,因为新的手册中已经将这部分的内容删除了。

More Related Content

Viewers also liked

Presta shop 1.6 的安装环境
Presta shop 1.6 的安装环境Presta shop 1.6 的安装环境
Presta shop 1.6 的安装环境YUCHENG HU
 
Mariadb10 和新项目中有什么
Mariadb10 和新项目中有什么Mariadb10 和新项目中有什么
Mariadb10 和新项目中有什么YUCHENG HU
 
Presta shop 1.6 详细安装指南
Presta shop 1.6 详细安装指南Presta shop 1.6 详细安装指南
Presta shop 1.6 详细安装指南YUCHENG HU
 
Confluencewiki 使用空间
Confluencewiki 使用空间Confluencewiki 使用空间
Confluencewiki 使用空间YUCHENG HU
 
Presta shop 1.6 如何安装简体中文语言文件
Presta shop 1.6 如何安装简体中文语言文件Presta shop 1.6 如何安装简体中文语言文件
Presta shop 1.6 如何安装简体中文语言文件YUCHENG HU
 
tutorial de Heidy SQL
tutorial de Heidy SQLtutorial de Heidy SQL
tutorial de Heidy SQLchabalma
 

Viewers also liked (8)

Presta shop 1.6 的安装环境
Presta shop 1.6 的安装环境Presta shop 1.6 的安装环境
Presta shop 1.6 的安装环境
 
Mariadb10 和新项目中有什么
Mariadb10 和新项目中有什么Mariadb10 和新项目中有什么
Mariadb10 和新项目中有什么
 
Presta shop 1.6 详细安装指南
Presta shop 1.6 详细安装指南Presta shop 1.6 详细安装指南
Presta shop 1.6 详细安装指南
 
Git
GitGit
Git
 
Confluencewiki 使用空间
Confluencewiki 使用空间Confluencewiki 使用空间
Confluencewiki 使用空间
 
Presta shop 1.6 如何安装简体中文语言文件
Presta shop 1.6 如何安装简体中文语言文件Presta shop 1.6 如何安装简体中文语言文件
Presta shop 1.6 如何安装简体中文语言文件
 
Heidi sql
Heidi sqlHeidi sql
Heidi sql
 
tutorial de Heidy SQL
tutorial de Heidy SQLtutorial de Heidy SQL
tutorial de Heidy SQL
 

Similar to Logback 介绍

J frog live demo ver4
J frog live demo   ver4J frog live demo   ver4
J frog live demo ver4Linktech
 
Log4j使用说明
Log4j使用说明Log4j使用说明
Log4j使用说明yiditushe
 
Php设计模式介绍
Php设计模式介绍Php设计模式介绍
Php设计模式介绍cyf5513
 
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定Shengyou Fan
 
CodeIgniter 2.0.X
CodeIgniter 2.0.XCodeIgniter 2.0.X
CodeIgniter 2.0.XBo-Yi Wu
 
Clojure cnclojure-meetup
Clojure cnclojure-meetupClojure cnclojure-meetup
Clojure cnclojure-meetupsunng87
 
做一个“懒惰”的程序员-LCP框架系列交流
做一个“懒惰”的程序员-LCP框架系列交流做一个“懒惰”的程序员-LCP框架系列交流
做一个“懒惰”的程序员-LCP框架系列交流lichengdongdong
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型Jackson Tian
 
Azure Functions
Azure FunctionsAzure Functions
Azure FunctionsDino Wang
 
Twitter 與 ELK 基本使用
Twitter 與 ELK 基本使用Twitter 與 ELK 基本使用
Twitter 與 ELK 基本使用Mark Dai
 
CocoaPods 使用教學
CocoaPods 使用教學CocoaPods 使用教學
CocoaPods 使用教學ShengWen Chiou
 
简单Pthon教程
简单Pthon教程简单Pthon教程
简单Pthon教程junjun chen
 
Firefox OS Overview
Firefox OS OverviewFirefox OS Overview
Firefox OS OverviewYan-ren Tsai
 
Different QTP.v3
Different QTP.v3Different QTP.v3
Different QTP.v3Dean Lee
 
CICD Workshop 20180922
CICD Workshop 20180922CICD Workshop 20180922
CICD Workshop 20180922Earou Huang
 
课题一:PHP5.3、PHP5.4的特性介绍与深度挖掘
课题一:PHP5.3、PHP5.4的特性介绍与深度挖掘课题一:PHP5.3、PHP5.4的特性介绍与深度挖掘
课题一:PHP5.3、PHP5.4的特性介绍与深度挖掘Liu Allen
 
Go 語言基礎簡介
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介Bo-Yi Wu
 

Similar to Logback 介绍 (20)

J frog live demo ver4
J frog live demo   ver4J frog live demo   ver4
J frog live demo ver4
 
Log4j使用说明
Log4j使用说明Log4j使用说明
Log4j使用说明
 
Php设计模式介绍
Php设计模式介绍Php设计模式介绍
Php设计模式介绍
 
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
 
CodeIgniter 2.0.X
CodeIgniter 2.0.XCodeIgniter 2.0.X
CodeIgniter 2.0.X
 
Clojure cnclojure-meetup
Clojure cnclojure-meetupClojure cnclojure-meetup
Clojure cnclojure-meetup
 
做一个“懒惰”的程序员-LCP框架系列交流
做一个“懒惰”的程序员-LCP框架系列交流做一个“懒惰”的程序员-LCP框架系列交流
做一个“懒惰”的程序员-LCP框架系列交流
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
Azure Functions
Azure FunctionsAzure Functions
Azure Functions
 
Twitter 與 ELK 基本使用
Twitter 與 ELK 基本使用Twitter 與 ELK 基本使用
Twitter 與 ELK 基本使用
 
Sth About SSD
Sth About SSDSth About SSD
Sth About SSD
 
CocoaPods 使用教學
CocoaPods 使用教學CocoaPods 使用教學
CocoaPods 使用教學
 
Les 3 ppt
Les 3 pptLes 3 ppt
Les 3 ppt
 
简单Pthon教程
简单Pthon教程简单Pthon教程
简单Pthon教程
 
Firefox OS Overview
Firefox OS OverviewFirefox OS Overview
Firefox OS Overview
 
Different QTP.v3
Different QTP.v3Different QTP.v3
Different QTP.v3
 
CICD Workshop 20180922
CICD Workshop 20180922CICD Workshop 20180922
CICD Workshop 20180922
 
课题一:PHP5.3、PHP5.4的特性介绍与深度挖掘
课题一:PHP5.3、PHP5.4的特性介绍与深度挖掘课题一:PHP5.3、PHP5.4的特性介绍与深度挖掘
课题一:PHP5.3、PHP5.4的特性介绍与深度挖掘
 
Osgi Intro
Osgi IntroOsgi Intro
Osgi Intro
 
Go 語言基礎簡介
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介
 

More from YUCHENG HU

Presta shop 1.6 如何安装简体中文语言文件
Presta shop 1.6 如何安装简体中文语言文件Presta shop 1.6 如何安装简体中文语言文件
Presta shop 1.6 如何安装简体中文语言文件YUCHENG HU
 
Presta shop 1.6 图文安装教程
Presta shop 1.6 图文安装教程Presta shop 1.6 图文安装教程
Presta shop 1.6 图文安装教程YUCHENG HU
 
V tiger 5.4.0 图文安装教程
V tiger 5.4.0 图文安装教程V tiger 5.4.0 图文安装教程
V tiger 5.4.0 图文安装教程YUCHENG HU
 
Confluence 回顾(retrospectives) 蓝图 cwikiossez
Confluence 回顾(retrospectives) 蓝图   cwikiossezConfluence 回顾(retrospectives) 蓝图   cwikiossez
Confluence 回顾(retrospectives) 蓝图 cwikiossezYUCHENG HU
 
Confluence 会议记录(meeting notes)蓝图 cwikiossez
Confluence 会议记录(meeting notes)蓝图   cwikiossezConfluence 会议记录(meeting notes)蓝图   cwikiossez
Confluence 会议记录(meeting notes)蓝图 cwikiossezYUCHENG HU
 
VTIGER - 销售机会 - CWIKIOSSEZ
VTIGER - 销售机会 - CWIKIOSSEZ VTIGER - 销售机会 - CWIKIOSSEZ
VTIGER - 销售机会 - CWIKIOSSEZ YUCHENG HU
 
Confluence 使用一个模板新建一个页面 cwikiossez
Confluence 使用一个模板新建一个页面     cwikiossezConfluence 使用一个模板新建一个页面     cwikiossez
Confluence 使用一个模板新建一个页面 cwikiossezYUCHENG HU
 
Confluence 使用模板
Confluence 使用模板Confluence 使用模板
Confluence 使用模板YUCHENG HU
 
Cwikiossez confluence 订阅页面更新邮件通知
Cwikiossez confluence 订阅页面更新邮件通知Cwikiossez confluence 订阅页面更新邮件通知
Cwikiossez confluence 订阅页面更新邮件通知YUCHENG HU
 
Cwikiossez confluence 关注页面 博客页面和空间
Cwikiossez confluence 关注页面 博客页面和空间Cwikiossez confluence 关注页面 博客页面和空间
Cwikiossez confluence 关注页面 博客页面和空间YUCHENG HU
 
My sql università di enna a.a. 2005-06
My sql   università di enna a.a. 2005-06My sql   università di enna a.a. 2005-06
My sql università di enna a.a. 2005-06YUCHENG HU
 
My sql would you like transactions
My sql would you like transactionsMy sql would you like transactions
My sql would you like transactionsYUCHENG HU
 
MySQL 简要介绍
MySQL 简要介绍MySQL 简要介绍
MySQL 简要介绍YUCHENG HU
 
mysql 5.5.25 用户安装备忘
mysql 5.5.25 用户安装备忘mysql 5.5.25 用户安装备忘
mysql 5.5.25 用户安装备忘YUCHENG HU
 
与 PHP 和 Perl 使用 MySQL 数据库
与 PHP 和 Perl 使用 MySQL 数据库与 PHP 和 Perl 使用 MySQL 数据库
与 PHP 和 Perl 使用 MySQL 数据库YUCHENG HU
 
与 PHP 和 Perl 使用 MySQL 数据库
与 PHP 和 Perl 使用 MySQL 数据库与 PHP 和 Perl 使用 MySQL 数据库
与 PHP 和 Perl 使用 MySQL 数据库YUCHENG HU
 
MySQL 简要介绍
MySQL 简要介绍MySQL 简要介绍
MySQL 简要介绍YUCHENG HU
 
从 Oracle 合并到 my sql npr 实例分析
从 Oracle 合并到 my sql   npr 实例分析从 Oracle 合并到 my sql   npr 实例分析
从 Oracle 合并到 my sql npr 实例分析YUCHENG HU
 

More from YUCHENG HU (20)

Presta shop 1.6 如何安装简体中文语言文件
Presta shop 1.6 如何安装简体中文语言文件Presta shop 1.6 如何安装简体中文语言文件
Presta shop 1.6 如何安装简体中文语言文件
 
Presta shop 1.6 图文安装教程
Presta shop 1.6 图文安装教程Presta shop 1.6 图文安装教程
Presta shop 1.6 图文安装教程
 
V tiger 5.4.0 图文安装教程
V tiger 5.4.0 图文安装教程V tiger 5.4.0 图文安装教程
V tiger 5.4.0 图文安装教程
 
Confluence 回顾(retrospectives) 蓝图 cwikiossez
Confluence 回顾(retrospectives) 蓝图   cwikiossezConfluence 回顾(retrospectives) 蓝图   cwikiossez
Confluence 回顾(retrospectives) 蓝图 cwikiossez
 
Confluence 会议记录(meeting notes)蓝图 cwikiossez
Confluence 会议记录(meeting notes)蓝图   cwikiossezConfluence 会议记录(meeting notes)蓝图   cwikiossez
Confluence 会议记录(meeting notes)蓝图 cwikiossez
 
VTIGER - 销售机会 - CWIKIOSSEZ
VTIGER - 销售机会 - CWIKIOSSEZ VTIGER - 销售机会 - CWIKIOSSEZ
VTIGER - 销售机会 - CWIKIOSSEZ
 
Confluence 使用一个模板新建一个页面 cwikiossez
Confluence 使用一个模板新建一个页面     cwikiossezConfluence 使用一个模板新建一个页面     cwikiossez
Confluence 使用一个模板新建一个页面 cwikiossez
 
Confluence 使用模板
Confluence 使用模板Confluence 使用模板
Confluence 使用模板
 
Cwikiossez confluence 订阅页面更新邮件通知
Cwikiossez confluence 订阅页面更新邮件通知Cwikiossez confluence 订阅页面更新邮件通知
Cwikiossez confluence 订阅页面更新邮件通知
 
Cwikiossez confluence 关注页面 博客页面和空间
Cwikiossez confluence 关注页面 博客页面和空间Cwikiossez confluence 关注页面 博客页面和空间
Cwikiossez confluence 关注页面 博客页面和空间
 
My sql università di enna a.a. 2005-06
My sql   università di enna a.a. 2005-06My sql   università di enna a.a. 2005-06
My sql università di enna a.a. 2005-06
 
My sql would you like transactions
My sql would you like transactionsMy sql would you like transactions
My sql would you like transactions
 
MySQL 指南
MySQL 指南MySQL 指南
MySQL 指南
 
MySQL 简要介绍
MySQL 简要介绍MySQL 简要介绍
MySQL 简要介绍
 
mysql 5.5.25 用户安装备忘
mysql 5.5.25 用户安装备忘mysql 5.5.25 用户安装备忘
mysql 5.5.25 用户安装备忘
 
Sql
SqlSql
Sql
 
与 PHP 和 Perl 使用 MySQL 数据库
与 PHP 和 Perl 使用 MySQL 数据库与 PHP 和 Perl 使用 MySQL 数据库
与 PHP 和 Perl 使用 MySQL 数据库
 
与 PHP 和 Perl 使用 MySQL 数据库
与 PHP 和 Perl 使用 MySQL 数据库与 PHP 和 Perl 使用 MySQL 数据库
与 PHP 和 Perl 使用 MySQL 数据库
 
MySQL 简要介绍
MySQL 简要介绍MySQL 简要介绍
MySQL 简要介绍
 
从 Oracle 合并到 my sql npr 实例分析
从 Oracle 合并到 my sql   npr 实例分析从 Oracle 合并到 my sql   npr 实例分析
从 Oracle 合并到 my sql npr 实例分析
 

Logback 介绍

  • 1. OSSEZTEC http://cwiki.ossez.com P1 Copyright © 2014, OSSEZ INC logback 介绍 The morale effects are startling. Enthusiasm jumps when there is a running system, even a simple one. Efforts redouble when the first picture from a new graphics software system appears on the screen, even if it is only a rectangle. One always has, at every stage in the process, a working system. I find that teams can grow much more complex entities in four months than they can build. —FREDERICK P. BROOKS, JR.,The Mythical Man-Month 什么是 logback Logback为取代log4j而生。 Logback由log4j的创立者Ceki Gülcü设计。以十多年设计工业级记录系统的经验为基础,所创建的logback比现有任何记录系统更快、占用资源更少,有时差距非常大。 Logback提供独特而实用的特性,比如Marker、参数化记录语句、条件化堆栈跟踪和强大的事件过滤功能。以上列出的仅仅是logbook实用特性的一 小部分。 对于自身的错误报告,logback依赖状态(Status)对象,状态对象极大地简化了故障查找。你也许想在上下文中使用状态对象而不是记录。 更重要的是,logback 提供了其他日志系统所没有的 offers独特并且有用 的功能。 第一步 为了能够运行本章节内容中使用的示例,你需要确定你的 classpath 中已经包含有必须的包。 请参考 中的内容获得更多的一些信息和帮助。设置页面 必要条件 Logback-classic 模块需要 和 。更多的有可能还需要 包,这些包需要在 classpath 中设置。slf4j-api.jar logback-core.jar logback-classic.jar logback-*.jar文件是 logback 分发包的一部分。这些包是随 一起发布的,你可以在 SLF4J 的分发包中找到所需要的的 jar 文件。SLF4J 现在让我们开始体验logback。 代码示例 1.1:日志的基本模板( )logback-examples/src/main/java/chapters/introduction/HelloWorld1.java 如果你可以访问 GitHub 或者已经将测试代码下载到本地了,你可以直接在本地运行。 GitHub 的代码地址为:https://github.com/qos-ch/logback/blob/master/logback-examples/src/main/java/chapters/introduction/HelloWorld1.jav a package chapters.introduction; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HelloWorld1 { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger("chapters.introduction.HelloWorld1"); logger.debug("Hello world."); } } HelloWorld1类中定义了 包。 同时导入了SLF4J API 定义的 Logger 类和 LoggerFactory 类,更准确的说法是定义在chapters.introduction org.slf4j 包里的两个类。 main()方法的第一行里,调用LoggerFactory类的静态方法getLogger取得一个Logger实例,将该实例赋值给变量logger。 这个logger被命名为“chapters.introduction.HelloWorld1”。main方法继续调用这个logger的debug方法并传递参数“Hello
  • 2. OSSEZTEC http://cwiki.ossez.com P2 Copyright © 2014, OSSEZ INC 这个logger被命名为“chapters.introduction.HelloWorld1”。main方法继续调用这个logger的debug方法并传递参数“Hello world”。我们称之为main方法包含了一条消息是“Hello world”、级别是DEBUG的记录语句。 注意上面的例子并没有引用任何logback的类。多数情况下,只要涉及到记录,你只需要引用SLF4J的类。因此在绝大多数情况下,你的类只导入SLF 4J的API,基本可以忽略logback的存在。 你可以通过下面的命令运行你的第一个简单程序 :chapters.introduction.HelloWorld1 java chapters.introduction.HelloWorld1 运行后会在控制台输出下面的一行文字。得益于logback提供了默认配置策略,当没有发现默认配置文件时,logback会为根(root) logger添加一个ConsoleAppender。 20:49:07.962 [main] DEBUG chapters.introduction.HelloWorld1 - Hello world. Eclipse 环境下运行的结果如下: logback 可以通过内置的状态系统来报告其内部状态。通过StatusManager组件可以访问logback生命期内发生的重要事件。目前,我们调用StatusPrinter类 的print()方法来打印logback的内部状态。 代码示例:打印日志状态( )logback-examples/src/main/java/chapters/introduction/HelloWorld2.java package chapters.introduction; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.core.util.StatusPrinter; public class HelloWorld2 { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger("chapters.introduction.HelloWorld2"); logger.debug("Hello world."); // print internal state LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); StatusPrinter.print(lc); } } 运行 程序后将会产生下面的输出:HelloWorld2
  • 3. OSSEZTEC http://cwiki.ossez.com P3 Copyright © 2014, OSSEZ INC 1. 2. 3. 12:49:22.203 [main] DEBUG chapters.introduction.HelloWorld2 - Hello world. 12:49:22,076 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy] 12:49:22,078 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml] 12:49:22,093 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml] 12:49:22,093 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Setting up default configuration. Eclipse 环境下面的运行输出: Logback说它没有找到配置文件 和 (稍后解释),于是用默认策略进行配置,即用一个基本的logback-test.xml logback.xml ConsoleAppender。 Appender类可被视为输出目的地的。Appender包含许多不同类型的目的地,包括控制台、文件、Syslog、TCP套接字、JMS和其他。用户可以很容 易地自定义Appender 当发生错误时,logback将自动在控制台上打印其内部状态。 之前的两个示例相当简单,大型程序里真实记录志情况也不会有太大区别。记录系统的基本模式不会改变,可能改变的是配置过程。也许你想按照 自己的需要来定制或配置logback,Logback 的配置章节将会会讨论配置 logback。 在上面的例子里,我们调用StatusPrinter.pring()方法来打印logback的内部状态。在诊断与logback相关的问题时,logback的内部状态信息会非常有 用。 在应程序里启用记录的三个必需步骤如下: 配置logback环境。方法有繁有简,稍后讨论。 在每个需要执行记录的类里,调用 org.slf4j.LoggerFactory 类的 getLogger() 方法获取一个 Logger 实例,以当前类名或类本身作为参数。 调用取得的logger实例的打印方法,即debug()、info()、warn()和error(),把记录输出到配置里的各个 Appender。 构建 logback 作为一个构建工具,Logback 依赖于构建工具 , Maven 是一个被广泛使用的构建工具。Maven 一旦你成功安装 Maven,构建 Logback 项目,包括所有的模块应该是已经非常容易的事情,你可以在 Logback 的安装目录下运行 Maven 的构建命令mvn install,Maven 将会自动下载所有需要的包。 Logback 发行包包含完整的源代码,你可以修改源代码,创建自己的版本。你还可以在遵守 遵守LGPL或EPL 的前提下发布修改过的版本。 在 IDE 环境下构建 Logback,请参考页面 中的内容。classpath 设置页面 基本上只要你有正确的 Maven 环境,重构 Logback 一般来说不是什么问题。我们测试过在 JDK 1.7 Windows8 的环境下没有任何问题。 在老的手册中,还有一个有关环境兼容性的表格,在本手册中将这部分内容忽略了,因为新的手册中已经将这部分的内容删除了。