昨天講了Hibernate開發環境的搭建以及實現一個Hibernate的基礎示例,可是你會發現運行輸出只有sql語句,不少輸出信息都看不見。這是由於用到的是slf4j-nop-1.6.1.jar的實現,這是slf4j本身的實現,但用的並很少,可是咱們可使用slf4j的接口對上log4j的實現,固然也能夠對上其它的log實現。那麼,我就在昨天Hello_World上搭建一個log4j的日誌環境。html
1、SLF4J簡介sql
SLJ4F(Simple Logging Facade for Java)簡單日誌門面,爲各類loging APIs提供一個簡單統一的接口,從而使得最終用戶可以在部署的時候配置本身但願的loging APIs實現。apache
SLF4J 不依賴任何特殊的class loader機制,實際上,SLF4J 和已有日誌實現的綁定是在編譯時靜態執行的,具體綁定工做是經過一個jar包實現的,使用時只要把相應的jar包(只有一個)放到類路徑上便可api
2、log4j搭建環境所需文件app
一、log4j-1.2.17:http://pan.baidu.com/s/1c0hDZG0ide
其他資源下載請參見前一篇博客:Hibernate學習之——Hibernate環境搭建post
3、SLF4J的實現原理學習
SLF4J支持多個日誌系統,好比NOP, Simple, log4j, JDK 1.4 logging, JCL and logback。那麼,SLF4J它的實現原理是什麼呢?SLF4J它只提供一個核心slf4j api(就是slf4j-api.jar包),這個包只有日誌的接口,並無實現,因此若是要使用就得再給它提供一個實現了些接口的日誌包,比 如:log4j,common logging,jdk log日誌實現包等,可是這些日誌實現又不能經過接口直接調用,實現上他們根本就和slf4j-api不一致,所以slf4j又增長了一層來轉換各日誌實現包的使 用,固然slf4j-simple、slf4j-nop除外。其結構以下:ui
實現原理:url
4、slf4j+log4j組合使用模式
1. slf4j-api-1.6.1.jar
2. slf4j-log4j12-1.6.1.jar
3. log4j-1.2.17.jar
4. log4j.properties(本身在Hibernate的文件夾裏搜索便可得到,對於不須要的輸出只需用#註釋掉便可)
此處組合模式中jar的版本號需要對應。對於配置完成的項目,裏面須要有這三個日誌文件jar包
log4j.properites配置信息:
1 ### direct log messages to stdout ### 2 log4j.appender.stdout=org.apache.log4j.ConsoleAppender 3 log4j.appender.stdout.Target=System.out 4 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 5 log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 6 7 ### direct messages to file hibernate.log ### 8 #log4j.appender.file=org.apache.log4j.FileAppender 9 #log4j.appender.file.File=hibernate.log 10 #log4j.appender.file.layout=org.apache.log4j.PatternLayout 11 #log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 12 13 ### set log levels - for more verbose logging change 'info' to 'debug' ### 14 15 log4j.rootLogger=warn, stdout 16 17 #log4j.logger.org.hibernate=info 18 log4j.logger.org.hibernate=debug 19 20 ### log HQL query parser activity 21 #log4j.logger.org.hibernate.hql.ast.AST=debug 22 23 ### log just the SQL 24 #log4j.logger.org.hibernate.SQL=debug 25 26 ### log JDBC bind parameters ### 27 log4j.logger.org.hibernate.type=info 28 #log4j.logger.org.hibernate.type=debug 29 30 ### log schema export/update ### 31 log4j.logger.org.hibernate.tool.hbm2ddl=debug 32 33 ### log HQL parse trees 34 #log4j.logger.org.hibernate.hql=debug 35 36 ### log cache activity ### 37 #log4j.logger.org.hibernate.cache=debug 38 39 ### log transaction activity 40 #log4j.logger.org.hibernate.transaction=debug 41 42 ### log JDBC resource acquisition 43 #log4j.logger.org.hibernate.jdbc=debug 44 45 ### enable the following line if you want to track down connection ### 46 ### leakages when using DriverManagerConnectionProvider ### 47 #log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
這樣一個log4j的日誌環境已經搭建完成了,若是有不明白的地方,能夠下載源碼參考學習。
做者:登天路
轉載請說明出處:http://www.cnblogs.com/travellife/
源碼下載:百度雲盤