一.log4j.properties文件格式說明:
?? log4j.rootLogger=info,?stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.


log4j.appender.stdout.layout.ConversionPattern=%5p?[%t]?(%F:%L)?-?%m%n
第一行,配置log4j.rootLogger你明白吧。應為它是根,等號后面的第一個參數表示日志級別,可以填五個級別中的一種,后面的參數都是讓Log知道輸出到哪里,如果你想讓日志輸出到兩個地方就加兩個輸出參數,比如:

log4j.rootLogger=info,?stdout, file

這里的info表示,該Log的日志級別為info,所有級別小于info的日志都不會被記錄。比如使用這個配置文件的話,我剛開始舉的那個類中

log.debug("Debug info.");

這句話是不起作用的,因為debug的級別小于info。這樣就很容易控制什么信息在調試的時候要顯示,什么信息在發布的時候要去掉。這些都不用改代碼,很方便吧。

但,stdoutfile又是什么呢?

接著往下看,就是配置stdout了,這個名字是隨便取的,你可以叫它A

log4j.appender.A=org.apache.log4j.ConsoleAppender

那么上面的rootLogger的參數stdout也要改成A,其他用到的地方當然也要改。這里的關鍵不是名字,而是appender類型,比如這里的“ConsoleAppender”,看明白了吧,輸出到Console。后面兩行都是設置日志格式的,一般情況下你就照抄吧。

二。配置方面:
log4j的包和commons-logging的包(加在一起才兩個)放到classpath下面。然后把配置文件保存為log4j.properties,也放在classpath下面(如果用Eclipse的話,放在src目錄下即可)。然后你就可以跑了。

1.多功能的log4j.properties配置如下:

log4j.rootLogger=DEBUG,CONSOLE,DATABASE,FILE

log4j.addivity.org.apache=true

?

# 應用于控制臺

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.Threshold=INFO

log4j.appender.CONSOLE.Target=System.out

log4j.appender.CONSOLE.Encoding=GBK

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout

log4j.appender.conOut.layout.ConversionPattern=%d %-5p [%c] %m%n

?

# 用于數據庫

log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender

log4j.appender.DATABASE.URL=jdbc:oracle:thin:@192.168.0.103:1521:ORCL

log4j.appender.DATABASE.driver=oracle.jdbc.driver.OracleDriver

log4j.appender.DATABASE.user=Nation

log4j.appender.DATABASE.password=1

log4j.appender.CONSOLE.Threshold=WARN

log4j.appender.DATABASE.sql=INSERT INTO LOG4J(stamp,thread, infolevel,class,messages) VALUES ('%d{yyyy-MM-dd HH:mm:ss}', '%t', '%p', '%l', '%m')

# INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')

# 寫入數據庫中的表LOG4J的Message字段中,內容%d(日期)%c: 日志信息所在地(類名)%p: 日志信息級別%m: 產生的日志具體信息 %n: 輸出日志信息換行

log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout

log4j.appender.DATABASE.layout.ConversionPattern=%d %-5p [%c] %m%n

?

# 每天新建日志

#(警告的意思是DailyRollingFileAppender這個類不帶屬性maxBackupIndex,maxFileSize的,它是#按日期來保存日志的,所以不需要設置該2個屬性,如果想要設置日志文件的大小,可以使用#RollingFileAppender這個類,平時開發中日志配置文件中需要注意設置。)

?

log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender

log4j.appender.A1.File=./logs/cebLog.txt

log4j.appender.A1.Encoding=GBK

log4j.appender.A1.Threshold=DEBUG

log4j.appender.A1.DatePattern='.'yyyy-MM-dd

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L : %m%n

?

#應用于文件

#(警告的意思是DailyRollingFileAppender這個類不帶屬性maxBackupIndex,maxFileSize的,它是#按日期來保存日志的,所以不需要設置該2個屬性,如果想要設置日志文件的大小,可以使用#RollingFileAppender這個類,平時開發中日志配置文件中需要注意設置。)

log4j.appender.File=org.apache.log4j.DailyRollingFileAppender

log4j.appender.File.File=./logs/cebLog.txt

log4j.appender.File.DatePattern='_'yyyy-MM-dd'.txt'

#log4j.appender.File.MaxFileSize=100KB

#log4j.appender.File.MaxBackupIndex=100

log4j.appender.File.layout=org.apache.log4j.PatternLayout

log4j.appender.File.layout.ConversionPattern=%d %t %-5p [%c] %m%n

?

# 應用于文件回滾(即文件到達MaxFileSize就會產生一個新的文件,MaxBackupIndex是指文件的最大數目)

log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender

log4j.appender.ROLLING_FILE.Threshold=ERROR

log4j.appender.ROLLING_FILE.File=rolling.log

log4j.appender.ROLLING_FILE.Append=true

log4j.appender.CONSOLE_FILE.Encoding=GBK

log4j.appender.ROLLING_FILE.MaxFileSize=10KB

log4j.appender.ROLLING_FILE.MaxBackupIndex=1

log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout

log4j.appender.ROLLING_FILE.layout.ConversionPattern=%d %-5p [%c] %m%n

?

#自定義Appender

log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender

log4j.appender.im.host = mail.cybercorlin.net

log4j.appender.im.username = username

log4j.appender.im.password = password

log4j.appender.im.recipient = yyflyons@163.com

log4j.appender.im.layout=org.apache.log4j.PatternLayout

log4j.appender.im.layout.ConversionPattern =%d %-5p [%c] %m%n

?

#應用于socket

log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender

log4j.appender.SOCKET.RemoteHost=localhost

log4j.appender.SOCKET.Port=5001

log4j.appender.SOCKET.LocationInfo=true

# Set up for Log Facter 5

log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout

log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n

# Log Factor 5 Appender

log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender

log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000

?

# 發送日志給郵件

log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender

log4j.appender.MAIL.Threshold=FATAL

log4j.appender.MAIL.BufferSize=10

log4j.appender.MAIL.From=yyflyons@163.com

log4j.appender.MAIL.SMTPHost=www.wusetu.com

log4j.appender.MAIL.Subject=Log4J Message

log4j.appender.MAIL.To=yyflyons@126.com

log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout

log4j.appender.MAIL.layout.ConversionPattern=%d %-5p [%c] %m%n

----------------------------------------------------------------------------------------------------

自己寫的log文件輸出:

用到的jar包:

log4j-1.2.16.jar

slf4j-api-1.6.1.jar

slf4j-log4j12-1.6.1.jar

src添加log4j.properties配置如下:

log4j.rootLogger=info,console,file


log4j.appender.console=org.apache.log4j.ConsoleAppender

log4j.appender.console.layout=org.apache.log4j.PatternLayout

log4j.appender.console.layout.ConversionPattern=[%-5p] %m%n


log4j.appender.file=org.apache.log4j.DailyRollingFileAppender

log4j.appender.file.DatePattern='-'yyyy-MM-dd

log4j.appender.file.File=E:/logs/test.log

log4j.appender.file.Append=true

log4j.appender.file.layout=org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern=[%-5p] %d %37c %3x - %m%n


測試類LogTest.class配置如下:

public class LogTest {

private static final Logger LOGGER = LoggerFactory.getLogger(App.class);

public static void main(String[] args) {

LOGGER.info("測試類:輸出log日志到:E:/logs/test.log");

}

}