簡單使用log4j
要在java項目中使用log4j,需要下載下傳log4j-x.x.x.jar。如果是使用的mvn或gradle建構項目,則添加依賴就可以了,我的pom.xml如下:
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
這csdn是不是有bug啊,我貼的代碼明明沒有前面的html屬性,我的内容是從<dependencies>開始的,無語
配置log4j.properties
log=D:/log4j
log4j.rootCategory=INFO, stdout,file
log4j.rootLogger=INFO, stdout,file
### stdout ###
log4j.appender.stdout= org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss} %t %p %C.%M(%L) %m%n
log4j.org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager=INFO
log4j.org.apache.http.impl.nio=INFO
# Define the file appender
log4j.appender.file=org.apache.log4j.RollingFileAppender
#log4j.appender.file.File=${log}/log.log
log4j.appender.file.File=./log.log
# Define the layout for file appender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.conversionPattern=%d{HH:mm:ss} %t %p %C.%M(%L) %m%n
# File max size
log4j.appender.file.MaxFileSize=100MB
# Keep three backup files.
log4j.appender.file.MaxBackupIndex=3650
java類如下:
public class Log4jExample {
public static void main(String[] args){
Logger log = Logger.getLogger(
Log4jExample.class.getName());
log.debug("Hello this is an debug message");
log.info("Hello this is an info message");
}
}
運作後得到的結果如下:
同時在項目目錄下可以看到日志檔案
log4j與slf4j結合
log4j是一個日志系統,slf4j是一個日志系統的封裝,對外提供統一的API。
使用slf4j需要下載下傳slf4j-api-x.x.x.jar 它提供對外一緻的API接口,其本身不提供日志實作。
如果想把slf4j綁定到log4j,則需要下載下傳slf4j對log4j的相應”驅動”——slf4j-log4j12-x.x.x.jar,這樣就可以使用slf4j提供的API,用log4j實作輸出日志了。
所謂驅動,就是實作了slf4j的一些接口,用你喜歡的日志系統打日志。
slf4j還支援好多日志系統,并提供了相應的“驅動”包,例如:
slf4j-jdk14-x.x.x.jar是為java.util.logging提供的驅動
slf4j-simple-x.x.x.jar直接綁定System.err
lf4j-jcl-x.x.x.jar是為commons-logging提供的驅動
logback-classic-x.x.x.jar是為logback提供的驅動
官方的網站:
http://www.slf4j.org/manual.html為何使用slf4j
我們在開發過程中可能使用各種log,每個Log有不同的風格、布局,如果想靈活的切換那麼slf4j是比較好的選擇。
如何使用slf4j
要使用slf4j,我們需要添加jar包或者添加依賴,如下:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
log4j.properties我們使用和上面相同的配置,這裡不再贅述,看下java類
public class Slf4jExample {
public static void main(String[] args)
throws IOException,SQLException {
Logger logger = LoggerFactory.getLogger(Slf4jExample.class);
logger.info(">>>>>>{}","Hello this is an info message");
}
}
不同點就是slf4j有一個占位符屬性,這不僅降低了你代碼中字元串連接配接次數,而且還節省了建立的String對象。通過使用SLF4J,你可以在運作時延遲字元串的建立,這意味着隻有需要的String對象才被建立。
log4j與Lombok結合使用
下面給大家介紹一個更高大上的方式,如果大家使用過Lombok,一定會注意到Lombok本身就封裝了slf4j,這樣我們就不用使用代碼去獲得Logger 對象了,首先需要添加依賴:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
使用的時候便十分友善了,隻需簡單的一句話就搞定
@Slf4j
public class LombokExample {
public static void main(String[] args) {
log.info(">>>>>>{}", "Hello this is an info message");
}
}
效果是一樣的,我就不再展示了
參考:
http://blog.csdn.net/ydpiaoyun/article/details/6717969 http://www.jb51.net/article/41001.htm http://www.yiibai.com/log4j/log4j_sample_program.html http://zhaoyanblog.com/archives/167.html http://blog.csdn.net/foreverling/article/details/51385128