簡單例子,再回頭來看參數
1
在
C
盤下面建立一個
Log4jTest.java,
內容如下
:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class Log4jTest
{
static Log log = LogFactory.getLog(Log4jTest.class.getName());
public static void main(String[] args)
{
log.info("
我在測試
");
int x = 0;
try
{
x = 5 / x;
}
catch (Exception e)
{
log.info(e);
log.debug(e);
}
}
}
2
拷貝
JAR
包到
C
盤
(log4j-1.2.15.jar
和
commons-logging.jar)
log4j-1.2.15.jar
可以到去
http://logging.apache.org/log4j/
下載
;
commons-logging.jar(
當你給工程加上
struts
架構時
,lib
會自動產生
);
3
在
C
盤根目錄建立一個檔案
log4j.properties,
內容如下
:
log4j.rootLogger=debug,
A1
,
A2
log4j.appender.A1
=org.apache.log4j.ConsoleAppender
log4j.appender.A1
.layout=org.apache.log4j.PatternLayout
log4j.appender.A1
.layout.ConversionPattern=%5p [%d{yyyy-MM-dd HH:mm:ss,SSS}] (%F:%L) - %m%n
log4j.appender.A2
=org.apache.log4j.RollingFileAppender
log4j.appender.A2
.File=example.log
log4j.appender.A2
.MaxFileSize= 100KB
log4j.appender.A2
.MaxBackupIndex=1
log4j.appender.A2
.layout=org.apache.log4j.PatternLayout
log4j.appender.A2
.layout.ConversionPattern=%p %t %c - %m%n
4
進入
cmd
控制台
,
到
C
盤根目錄下
,
執行下列命令
javac -classpath c:/log4j-1.2.15.jar;c:/commons-logging.jar Log4jTest.java
斷行符號
java -classpath .;c:/log4j-1.2.15.jar;c:/commons-logging.jar Log4jTest
斷行符號
5
控制台輸出內容如下
:
INFO [main] (Log4jTest.java:12) -
我在測試
INFO [main] (Log4jTest.java:20) - java.lang.ArithmeticException: / by zero
DEBUG [main] (Log4jTest.java:21) - java.lang.ArithmeticException: / by zero
6
這時你會看到在
C
盤根目錄出來了
example.log
檔案
,
內容如下
:
INFO main Log4jTest -
我在測試
INFO main Log4jTest - java.lang.ArithmeticException: / by zero
DEBUG main Log4jTest - java.lang.ArithmeticException: / by zero
設定檔的參數
(
把上面的設定檔分為三大塊
)
1
第一塊
:log4j.rootLogger=debug,A1,A2
a)log4j.rootLogger
後面的第一個參數
debug(
這個值
(
顯示的資訊優先順序
)
的取值範圍為
6
種
:ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF)
b)
上面例子中設定了
DEBUG,
則我程式中寫的
log.debug(),log.info(),log.warn()...
層級
>=DEBUG
都會顯示出來
;
c)
如果你設定了
INFO,
那麼我程式中寫的
log.debug()
是不會被顯示出來的
,log.info(),log.warn()...
這些內容才會顯示出來
;
d)A1,A2
兩個為
appender
的名稱
(
即
,
你可以每一個名稱都對應一塊內容
),
這兩個參數結合第二
,
三大塊內容來看
;
2
第二塊
:
這一塊是用來定義
A1
的
appender
的幾個參數
a)log4j.appender.A1=org.apache.log4j.ConsoleAppender(
指明
A1
的顯示方法
,
有下面幾種取值
)
org.apache.log4j.ConsoleAppender(
控制台
)
org.apache.log4j.FileAppender(
檔案
)
org.apache.log4j.DailyRollingFileAppender(
每天產生一個記錄檔
)
org.apache.log4j.RollingFileAppender(
檔案大小到達指定尺寸的時候產生新檔案
)
org.apache.log4j.WriterAppender(
將日誌資訊以流格式發送到任意指定的地方
)
b)log4j.appender.A1.layout=org.apache.log4j.PatternLayout(
指明
A1
的顯示資訊的類型
)
org.apache.log4j.HTMLLayout(
以
HTML
表格形式布局
)
org.apache.log4j.PatternLayout(
可以靈活地指定配置模式
)
org.apache.log4j.SimpleLayout(
包含日誌資訊的層級和資訊字串
)
org.apache.log4j.TTCCLayout(
包含日誌產生的時間、線程、類別等等資訊
)
c)log4j.appender.A1.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n(
指明
A1
的顯示資訊的格式
)
%p
輸出優先順序,即
ALL,DEBUG,INFO,WARN,ERROR,FATAL,OFF;
%r
輸出自應用啟動到輸出該
log
資訊耗費的毫秒數
;
%c
輸出所屬的類目,通常就是所在類的全名
;
%t
輸出產生該日誌事件的線程名
;
%n
輸出一個斷行符號分行符號,
Windows
平台為
"/r/n"
,
Unix
平台為
"/n";
%d
輸出日誌時間點的日期或時間,預設格式為
ISO8601
,也可以在其後指定格式
,
如
(yyyy-MM-dd HH:mm:ss,SSS);
%L
輸出代碼中的行數
;
%l
輸出代碼中的所屬檔案中的方法下面的行數
;
%F
輸出代碼中的檔案名稱
;
%m
輸出代碼中的行數
;
切記
,
上面的參數是區分大小寫
;
原文連結地址:http://blog.csdn.net/lj408226003/archive/2009/02/03/3858462.aspx