Log4j 實例

1.Maven 配置

<dependency>  
	<groupId>org.slf4j</groupId>  
	<artifactId>slf4j-api</artifactId>  
	<version>1.7.7</version>  
</dependency>  
<dependency>  
	<groupId>org.slf4j</groupId>  
	<artifactId>slf4j-log4j12</artifactId>  
	<version>1.7.7</version>  
</dependency>
<dependency>  
    <groupId>log4j</groupId>  
    <artifactId>log4j</artifactId>  
    <version>1.2.17</version>
</dependency>

2.測試代碼:

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

public class Log4jTest {

	static public Logger logger = LoggerFactory.getLogger(Log4jTest.class); 
	
	public static void main(String[] args) {
		// System.out.println("This is println message.");  
	    // 記錄debug級別的信息  
	    logger.debug("This is debug message.");  
	    // 記錄info級別的信息  
	    logger.info("This is info message.");  
	    // 記錄error級別的信息  
	    logger.error("This is error message.");  
	} 
}

問題:html

log4j:WARN No appenders could be found for logger (testSite.Log4jTest).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

log4j.properties 配置文件缺失,即 src/main/resources 下無此文件java

3.log4j.properties 配置

rootLogger 部分

#日誌 輸出級別 爲 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL 或者自定義的級別,Log4j建議只使用中間四個級別。 
#第一個參數爲 輸出 日誌級別 ,後面參數爲 Appender
log4j.rootLogger=DEBUG,console,dailyFile....
# 表示Logger不會在父Logger的appender裏輸出,默認爲true
log4j.additivity.org.apache=false

Appender 日誌輸出解析

控制檯spring

# 控制檯(console)#
log4j.appender.console=org.apache.log4j.ConsoleAppender
# Threshold:指定日誌信息的最低輸出級別,默認爲DEBUG #
log4j.appender.console.Threshold=DEBUG
# ImmediateFlush:表示全部消息都會被當即輸出,設爲false則不輸出,默認值是true #
log4j.appender.console.ImmediateFlush=true
# Target:默認值是System.out #
log4j.appender.console.Target=System.err
#layout
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

文件sql

# 日誌文件(logFile)#
log4j.appender.logFile=org.apache.log4j.FileAppender
# Threshold:指定日誌信息的最低輸出級別,默認爲DEBUG。#
log4j.appender.logFile.Threshold=DEBUG
# ImmediateFlush:表示全部消息都會被當即輸出,設爲false則不輸出,默認值是true#
log4j.appender.logFile.ImmediateFlush=true
# Append:true表示消息增長到指定文件中,false則將消息覆蓋指定的文件內容,默認值是true#
log4j.appender.logFile.Append=true
# File:指定消息輸出到logging.log4j文件中。#
log4j.appender.logFile.File=D:/logs/log.log4j
#layout
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

天天產生一個日誌文件apache

# 按期回滾日誌文件(dailyFile)#
log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppender
# Threshold:指定日誌信息的最低輸出級別,默認爲DEBUG。#
log4j.appender.dailyFile.Threshold=DEBUG
# ImmediateFlush:表示全部消息都會被當即輸出,設爲false則不輸出,默認值是true#
log4j.appender.dailyFile.ImmediateFlush=true
# Append:true表示消息增長到指定文件中,false則將消息覆蓋指定的文件內容,默認值是true#
log4j.appender.dailyFile.Append=true
# File:指定消息輸出到logging.log4j文件中。#
log4j.appender.dailyFile.File=D:/logs/log.log4j
# DatePattern='.'yyyy-MM:每個月滾動一第二天志文件,即每個月產生一個新的日誌文件。   # 
#   當前月的日誌文件名爲logging.log4j,前#   一個月的日誌文件名爲logging.log4j.yyyy-MM。   # 
#   另外,也能夠指定按周、天、時、分等來滾動日誌文件,對應的格式以下:   # 
#   1)'.'yyyy-MM:每個月   # 
#   2)'.'yyyy-ww:每週   # 
#   3)'.'yyyy-MM-dd:天天   # 
#   4)'.'yyyy-MM-dd-a:天天兩次   # 
#   5)'.'yyyy-MM-dd-HH:每小時   # 
#   6)'.'yyyy-MM-dd-HH-mm:每分鐘   #   
log4j.appender.dailyFile.DatePattern='.'yyyy-MM-dd
#layout
log4j.appender.dailyFile.layout=org.apache.log4j.PatternLayout
log4j.appender.dailyFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

文件大小到達指定尺寸的時候產生一個新的文件api

# 回滾文件(rollingFile)#
log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
# Threshold:指定日誌信息的最低輸出級別,默認爲DEBUG
log4j.appender.rollingFile.Threshold=DEBUG
# ImmediateFlush:表示全部消息都會被當即輸出,設爲false則不輸出,默認值是true。
log4j.appender.rollingFile.ImmediateFlush=true
# Append:true表示消息增長到指定文件中,false則將消息覆蓋指定的文件內容,默認值是true
log4j.appender.rollingFile.Append=true
# File:指定消息輸出到logging.log4j文件中
log4j.appender.rollingFile.File=D:/logs/log.log4j
# MaxFileSize:後綴能夠是KB, MB 或者GB。
# 在日誌文件到達該大小時,將會自動滾動,即將原來的內容移到logging.log4j.1文件中
log4j.appender.rollingFile.MaxFileSize=200KB
# 指定能夠產生的滾動文件的最大數,例如,設爲2則能夠產生
log4j.appender.rollingFile.MaxBackupIndex=50
#layout
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

將日誌信息以流格式發送到任意指定的地方bash

Layout 輸出格式

(1)org.apache.log4j.PatternLayout(能夠靈活地指定佈局模式)選項:
    ConversionPattern=%m%n:設定以怎樣的格式顯示消息多線程

格式化符號說明:

%p:輸出日誌信息的優先級,即DEBUG,INFO,WARN,ERROR,FATAL。
%d:輸出日誌時間點的日期或時間,默認格式爲ISO8601,也能夠在其後指定格式,如:%d{yyyy/MM/dd HH:mm:ss,SSS}。
%r:輸出自應用程序啓動到輸出該log信息耗費的毫秒數。
%t:輸出產生該日誌事件的線程名。
%l:輸出日誌事件的發生位置,至關於%c.%M(%F:%L)的組合,包括類全名、方法、文件名以及在代碼中的行數。
   例如:test.TestLog4j.main(TestLog4j.java:10)。
%c:輸出日誌信息所屬的類目,一般就是所在類的全名。
%M:輸出產生日誌信息的方法名。
%F:輸出日誌消息產生時所在的文件名稱。
%L::輸出代碼中的行號。
%m::輸出代碼中指定的具體日誌信息。
%n:輸出一個回車換行符,Windows平臺爲"rn",Unix平臺爲"n"。
%x:輸出和當前線程相關聯的NDC(嵌套診斷環境),尤爲用到像java servlets這樣的多客戶多線程的應用中。
%%:輸出一個"%"字符。
另外,還能夠在%與格式字符之間加上修飾符來控制其最小長度、最大長度、和文本的對齊方式。如:
1) c:指定輸出category的名稱,最小的長度是20,若是category的名稱長度小於20的話,默認的狀況下右對齊。
2)%-20c:"-"號表示左對齊。
3)%.30c:指定輸出category的名稱,最大的長度是30,若是category的名稱長度大於30的話,就會將左邊多出的字符截掉,
    但小於30的話也不會補空格。

(2)org.apache.log4j.HTMLLayout(以HTML表格形式佈局)選項:
    LocationInfo=true:輸出java文件名稱和行號,默認值是false。
    Title=My Logging: 默認值是Log4J Log Messages。app

(3)org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串)
(4)org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息)佈局

4.例子

# Output pattern : date [thread] priority category - message   FATAL 0  ERROR 3  WARN 4  INFO 6  DEBUG 7 
log4j.rootLogger=INFO, Console, RollingFile

#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%-5p] [%X{SEQ}] %l %m%n

#RollingFile
log4j.appender.RollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RollingFile.File=logs/ams.balance.log
log4j.appender.RollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.RollingFile.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [ %p ] [%X{SEQ}] %l %m%n

# SQL \u6253\u5370
log4j.logger.com.jf.ams.bankpage.dao=DEBUG
log4j.logger.com.springframework=DEBUG
log4j.logger.com.ibatis=DEBUG  
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG  
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG  
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG  
log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG  
log4j.logger.java.sql.PreparedStatement=DEBUG  
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl=DEBUG
<!-- log4j 配置 開始 -->
<context-param>
    <param-name> log4jConfigLocation </param-name >
    <param-value> /WEB-INF/classes/log4j.properties </param-value >
</context-param>
 <context-param>
    <param-name> log4jRefreshInterval </param-name >
    <param-value> 600000 </param-value >
</context-param>

5.參考

http://www.javashuo.com/article/p-vmwninhj-gg.html

http://blog.csdn.net/evankaka/article/details/45815047

相關文章
相關標籤/搜索