The blog of Astro Qi
posts - 40, comments - 58, trackbacks - 0, articles - 0
BlogJava
::
首頁(yè)
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
SLF4J + logBack
Posted on 2010-11-17 14:33
Astro.Qi
閱讀(2548)
評(píng)論(0)
編輯
收藏
所屬分類:
Java
一. Log4j+commons-logging
? JAR包
commons-logging-1.1.jar
log4j-1.2.15.jar
? 配置文件
commons-logging.properties
log4j.xml
? commons-logging.jar包讀取commons-logging.properties中指定的log,自動(dòng)加載日志配置
在commons-logging+log4j組合中commons-logging.properties指定的日志為:
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
? log4j指定具體日志輸出配置
? 如果未選用commons-logging,可以在啟動(dòng)項(xiàng)目中,主動(dòng)加載log4j的配置文件
二. slf4j+Logback
? JAR包
slf4j-api-1.5.2.jar
logback-classic-0.9.9.jar
logback-core-0.9.9.jar
? 配置文件
Logback.xml
? logback的加載采用編碼加載
Java代碼
String logbackCfg =
"/config/logback.xml"
;
URL logURL =
new
ClassPathResource(logbackCfg).getURL();
ILoggerFactory loggerFactory = LoggerFactory.getILoggerFactory();
LoggerContext loggerContext = (LoggerContext) loggerFactory;
loggerContext.shutdownAndReset();
JoranConfigurator configurator =
new
JoranConfigurator();
configurator.setContext(loggerContext);
configurator.doConfigure(logURL);
三. Slf4j+log4j
? JAR包
slf4j-api-1.5.2.jar
slf4j-log4j12-1.5.2.jar
log4j-1.2.15.jar
? 配置文件
Logback.xml
四. Slf4j+logback+log4j
注:這種情況下是項(xiàng)目中有l(wèi)og4j輸出的日志以及l(fā)ogback數(shù)據(jù)的日志.老項(xiàng)目改造,log4j和logback共存的情況下.(當(dāng)選用spring+slf4j+logback的時(shí)候,spring的日志輸出是log4j的,這個(gè)時(shí)候采用這種配置.)
? JARbao
log4j-over-slf4j-1.5.2.jar
logback-classic-0.9.9.jar
logback-core-0.9.9.jar
slf4j-api-1.5.2.jar
? 配置文件
Logback.xml
? 配置加載
Java代碼
String logbackCfg =
"/config/logback.xml"
;
URL logURL =
new
ClassPathResource(logbackCfg).getURL();
ILoggerFactory loggerFactory = LoggerFactory.getILoggerFactory();
LoggerContext loggerContext = (LoggerContext) loggerFactory;
loggerContext.shutdownAndReset();
JoranConfigurator configurator =
new
JoranConfigurator();
configurator.setContext(loggerContext);
configurator.doConfigure(logURL);
五. Log4j配置文件示例
Java代碼
<?xml version=
"1.0"
encoding=
"UTF-8"
?>
<!DOCTYPE log4j:configuration SYSTEM
"log4j.dtd"
>
<log4j:configuration xmlns:log4j=
"http://jakarta.apache.org/log4j/"
>
<!-- 控制臺(tái)輸出-->
<appender name=
"CONSOLE"
class
=
"org.apache.log4j.ConsoleAppender"
>
<param name=
"Target"
value=
"System.out"
/>
<param name=
"Threshold"
value=
"INFO"
/>
<layout
class
=
"org.apache.log4j.PatternLayout"
>
<param name=
"ConversionPattern"
value=
"%d{yyyy-MM-dd HH:mm:ss sss}[%-p][%-c][line:%-L] \r\n %m%n"
/>
</layout>
<!— 以下是過(guò)濾一些不需要輸出的log信息 -->
<filter
class
=
"org.apache.log4j.varia.StringMatchFilter"
>
<param name=
"StringToMatch"
value=
"new a seq no spend"
/>
<param name=
"AcceptOnMatch"
value=
"false"
/>
</filter>
<filter
class
=
"org.apache.log4j.varia.StringMatchFilter"
>
<param name=
"StringToMatch"
value=
"new hi[type="
/>
<param name=
"AcceptOnMatch"
value=
"false"
/>
</filter>
<filter
class
=
"org.apache.log4j.varia.StringMatchFilter"
>
<param name=
"StringToMatch"
value=
"FileTransfer.execCommand()"
/>
<param name=
"AcceptOnMatch"
value=
"false"
/>
</filter>
</appender>
<!--文件輸出 按照文件大小滾動(dòng)文件-->
<appender name=
"xxxx_file"
class
=
"org.apache.log4j.RollingFileAppender"
>
<param name=
"Append"
value=
"true"
/>
<param name=
"Threshold"
value=
"INFO"
/>
<param name=
"File"
value=
"xxxx.log"
/>
<param name=
"MaxFileSize"
value=
"100MB"
/>
<param name=
"MaxBackupIndex"
value=
"15"
/>
<layout
class
=
"org.apache.log4j.PatternLayout"
>
<param name=
"ConversionPattern"
value=
"%d{yyyy-MM-dd HH:mm:ss sss}[%-p][%-c][line:%-L] \r\n %m%n"
/>
</layout>
<filter
class
=
"org.apache.log4j.varia.StringMatchFilter"
>
<param name=
"StringToMatch"
value=
"new a seq no spend"
/>
<param name=
"AcceptOnMatch"
value=
"false"
/>
</filter>
<filter
class
=
"org.apache.log4j.varia.StringMatchFilter"
>
<param name=
"StringToMatch"
value=
"new hi[type="
/>
<param name=
"AcceptOnMatch"
value=
"false"
/>
</filter>
<filter
class
=
"org.apache.log4j.varia.StringMatchFilter"
>
<param name=
"StringToMatch"
value=
"FileTransfer.execCommand()"
/>
<param name=
"AcceptOnMatch"
value=
"false"
/>
</filter>
</appender>
<!-- 錯(cuò)誤輸出 過(guò)濾出錯(cuò)誤日志信息-->
<appender name=
"xxxx_error"
class
=
"org.apache.log4j.RollingFileAppender"
>
<param name=
"Append"
value=
"true"
/>
<param name=
"Threshold"
value=
"ERROR"
/>
<param name=
"File"
value=
"xxxx-error.log"
/>
<param name=
"MaxFileSize"
value=
"100MB"
/>
<param name=
"MaxBackupIndex"
value=
"4"
/>
<layout
class
=
"org.apache.log4j.PatternLayout"
>
<param name=
"ConversionPattern"
value=
"%d{yyyy-MM-dd HH:mm:ss sss}[%-p][%-c][line:%-L] \r\n %m%n"
/>
</layout>
</appender>
<!-- 根loggr -->
<root>
<appender-ref ref=
"CONSOLE"
/>
<appender-ref ref=
"xxxx_file"
/>
<appender-ref ref=
"xxxx_file_error"
/>
</root>
</log4j:configuration>
六. Logback配置文件示例
Java代碼
<?xml version=
"1.0"
encoding=
"UTF-8"
?>
<!DOCTYPE configuration>
<configuration>
<jmxConfigurator />
<!-- 控制臺(tái)輸出日志 -->
<appender name=
"STDOUT"
class
=
"ch.qos.logback.core.ConsoleAppender"
>
<layout
class
=
"ch.qos.logback.classic.PatternLayout"
>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{
36
} - %msg%n</pattern>
</layout>
</appender>
<!-- 文件輸出日志 (文件大小策略進(jìn)行文件輸出,超過(guò)指定大小對(duì)文件備份)-->
<appender name=
"FILE"
class
=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<File>xxxx.log</File>
<rollingPolicy
class
=
"ch.qos.logback.core.rolling.FixedWindowRollingPolicy"
>
<FileNamePattern>xxxx.log.%i.bak</FileNamePattern>
<MinIndex>
1
</MinIndex>
<MaxIndex>
12
</MaxIndex>
</rollingPolicy>
<triggeringPolicy
class
=
"ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"
>
<MaxFileSize>100MB</MaxFileSize>
</triggeringPolicy>
<layout
class
=
"ch.qos.logback.classic.PatternLayout"
>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{
36
} - %msg%n</Pattern>
</layout>
</appender>
<appender name=
"FILE-ERROR"
class
=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<filter
class
=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>ERROR</level>
<OnMismatch>DENY</OnMismatch>
<OnMatch>ACCEPT</OnMatch>
</filter>
<File>xxxx-err.log</File>
<rollingPolicy
class
=
"ch.qos.logback.core.rolling.FixedWindowRollingPolicy"
>
<FileNamePattern>xxxx-err.log.%i.bak</FileNamePattern>
<MinIndex>
1
</MinIndex>
<MaxIndex>
3
</MaxIndex>
</rollingPolicy>
<triggeringPolicy
class
=
"ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"
>
<MaxFileSize>100MB</MaxFileSize>
</triggeringPolicy>
<layout
class
=
"ch.qos.logback.classic.PatternLayout"
>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{
36
} - %msg%n</Pattern>
</layout>
</appender>
<!--這里指定logger name 是為jmx設(shè)置日志級(jí)別做鋪墊 -->
<logger name=
"com.xxx.xxx"
>
<level value=
"INFO"
/>
<appender-ref ref=
"STDOUT"
/>
<appender-ref ref=
"FILE"
/>
<appender-ref ref=
"FILE-ERROR"
/>
</logger>
</configuration>
七. 相關(guān)簡(jiǎn)單說(shuō)明
? Log4j
Log4j是Apache的一個(gè)開(kāi)放源代碼項(xiàng)目,通過(guò)使用Log4j,我們可以控制日志信息輸送的目的地是控制臺(tái)、文件、GUI組件、甚至是套接口服務(wù) 器、NT的事件記錄器、UNIX Syslog守護(hù)進(jìn)程等;用戶也可以控制每一條日志的輸出格式;通過(guò)定義每一條日志信息的級(jí)別,用戶能夠更加細(xì)致地控制日志的生成過(guò)程。這些可以通過(guò)一個(gè) 配置文件來(lái)靈活地進(jìn)行配置,而不需要修改程序代碼
? Slf4j
簡(jiǎn)單日記門面(Facade)SLF4J是為各種loging APIs提供一個(gè)簡(jiǎn)單統(tǒng)一的接口,從而使得最終用戶能夠在部署的時(shí)候配置自己希望的loging APIs實(shí)現(xiàn)。 Logging API實(shí)現(xiàn)既可以選擇直接實(shí)現(xiàn)SLF4J接的loging APIs如: NLOG4J、SimpleLogger。也可以通過(guò)SLF4J提供的API實(shí)現(xiàn)來(lái)開(kāi)發(fā)相應(yīng)的適配器如Log4jLoggerAdapter、JDK14LoggerAdapter。
? Logback
Logback是由log4j創(chuàng)始人設(shè)計(jì)的又一個(gè)開(kāi)源日記組件。logback當(dāng)前分成三個(gè)模塊:logback-core,logback- classic和logback-access。logback-core是其它兩個(gè)模塊的基礎(chǔ)模塊。logback-classic是log4j的一個(gè) 改良版本。此外logback-classic完整實(shí)現(xiàn)SLF4J API使你可以很方便地更換成其它日記系統(tǒng)如log4j或JDK14 Logging。logback-access訪問(wèn)模塊與Servlet容器集成提供通過(guò)Http來(lái)訪問(wèn)日記的功能。
新用戶注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問(wèn)
管理
相關(guān)文章:
對(duì) java.nio.ByteBuffer 的理解
字符編碼詳解及由來(lái)(UNICODE,UTF-8,GBK)
SLF4J + logBack
byte[] to int
Java 中 byte與char、String互轉(zhuǎn)原理
Java Stack棧和Heap堆的區(qū)別
Apache James 收發(fā)內(nèi)外網(wǎng)郵件的配置
Web Services Xfire
JDBC ORACLE CLOB (用分頁(yè)思想解決兆級(jí)以上的字符流操作問(wèn)題)
JavaMail API 簡(jiǎn)介
Powered by:
BlogJava
Copyright © Astro.Qi
日歷
<
2010年11月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
常用鏈接
我的隨筆
我的評(píng)論
我的參與
最新評(píng)論
留言簿
(4)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類
Android(1)
C/C++(2)
Hibernate(3)
Java(14)
JavaFX(2)
Linux(1)
Living(6)
Oracle(9)
Spring(2)
隨筆檔案
2011年5月 (1)
2011年4月 (3)
2010年12月 (1)
2010年11月 (4)
2009年10月 (1)
2009年6月 (1)
2009年4月 (1)
2009年2月 (2)
2009年1月 (9)
2008年8月 (1)
2008年7月 (3)
2008年6月 (11)
2008年1月 (1)
2007年12月 (1)
Java
《深入淺出 Java Concurrency》目錄
Java FX
JavaFX中國(guó)社區(qū)
JavaFX腳本語(yǔ)言
JavaEE博客
JavaEE
深入解析Spring MVC與Web Flow
Odin博客
Linux服務(wù)器技術(shù)
ORACLE和DB2的不同
Open WebMail
Open WebMail 安裝,設(shè)置,問(wèn)題解決
Open WebMail 完全安裝手冊(cè)
Open WebMail 官方站臺(tái)
Others
JDK5多線程框架java.util.concurrent,android中也是可以用的
Android
Android 02
Fedare安裝ORACLE 9i
Fedora 9完全配置
oracle for linux 安裝
Red Hat Enterprise Linux 5(32Bit/64Bit)安裝Oracle(10g/11g)
redhat安裝oracle
redhat安裝oracle 2
Spring Security
Spring Security提高
鳥(niǎo)哥的 Linux 私房菜
WAP博客
WAP博客--Groovy和Grails簡(jiǎn)介
WAP博客--Oracle備份Clob數(shù)據(jù)
WAP博客--Oracle常用命令
搜索
最新評(píng)論
1.?re: 對(duì) java.nio.ByteBuffer 的理解[未登錄](méi)
12
--1
2.?re: 對(duì) java.nio.ByteBuffer 的理解[未登錄](méi)
1
--1
3.?re: 對(duì) java.nio.ByteBuffer 的理解[未登錄](méi)
11
--1
4.?re: 對(duì) java.nio.ByteBuffer 的理解[未登錄](méi)
1
--1
5.?re: Apache James 收發(fā)內(nèi)外網(wǎng)郵件的配置
不能刪除郵件,樓主有遇到過(guò)這個(gè)問(wèn)題嗎?
--gxy
閱讀排行榜
1.?Apache james mailserver + Claros inTouch webmail(7498)
2.?Apache James 收發(fā)內(nèi)外網(wǎng)郵件的配置(5353)
3.?Oracle熱備份(3023)
4.?SLF4J + logBack(2548)
5.?Eclipse+CDT+MinGW搭建C++環(huán)境(2443)
評(píng)論排行榜
1.?Apache james mailserver + Claros inTouch webmail(33)
2.?FCKeditor2.6 for JSP 配置方法(12)
3.?Apache James 收發(fā)內(nèi)外網(wǎng)郵件的配置(4)
4.?對(duì) java.nio.ByteBuffer 的理解(4)
5.?Hibernate自定義表單完全解決方案(無(wú)需重置SessionFactory)(1)
主站蜘蛛池模板:
亚洲裸男gv网站
|
久久久高清免费视频
|
一本久久综合亚洲鲁鲁五月天
|
77777亚洲午夜久久多喷
|
亚洲免费观看网站
|
亚洲狠狠狠一区二区三区
|
免费观看无遮挡www的小视频
|
亚洲无线电影官网
|
91大神在线免费观看
|
久久久亚洲欧洲日产国码aⅴ
|
久久国产精品免费网站
|
亚洲一二成人精品区
|
亚洲日本VA午夜在线影院
|
亚洲精品伦理熟女国产一区二区
|
一个人免费高清在线观看
|
特级毛片A级毛片免费播放
|
a级毛片100部免费观看
|
99久久精品国产亚洲
|
国产一级片免费看
|
国产亚洲一卡2卡3卡4卡新区
|
亚洲国产精品一区二区第一页
|
亚洲精品狼友在线播放
|
国产羞羞的视频在线观看免费
|
亚洲国产成人精品不卡青青草原
|
蜜桃成人无码区免费视频网站
|
成人毛片免费观看视频在线
|
亚洲精品国产av成拍色拍
|
亚洲国产精品成人网址天堂
|
a毛片久久免费观看
|
亚洲春色另类小说
|
国产免费av片在线无码免费看
|
亚洲av无码一区二区三区网站
|
最近中文字幕无免费
|
国产成人亚洲综合在线
|
在线A亚洲老鸭窝天堂
|
aⅴ在线免费观看
|
一级做a爱过程免费视
|
亚洲国产美女精品久久
|
亚洲AV无码成H人在线观看
|
99国产精品视频免费观看
|
婷婷亚洲综合一区二区
|