java中log日志的使用(完全版)

Commons_logging包Apache通用日志包

他为Log4JLogger;NoOpLog;LogKitLogger;Jdk14Logger;AvalonLogger提供了一共通用的接口进行调用,使得在使用各种不同的第三方日志包时变得非常简单。SimpleLog:是commons_logging自带的一个控制台输出日志。

可以通过简单的配置使用不同的第三方日志包。

在src根目录下放进commons-logging.properties文件,进行配置使用哪个第三方日志包。

#定义了使用的具体第三方的日值包

#org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
#org.apache.commons.logging.Log=org.apache.commons.logging.impl.NoOpLog
#org.apache.commons.logging.Log=org.apache.commons.logging.impl.LogKitLogger
#org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
#org.apache.commons.logging.Log=org.apache.commons.logging.impl.AvalonLogger

程序中调用:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public static Log log = LogFactory.getLog(test.class);
log.error("成功关闭链接");

在commons_logging.properties文件中定义好了使用那个第三方日志包,在程序中打印日志时,就使用的是那个包,非常方便。

Log日志包

log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
ConsoleAppender,控制台输出
FileAppender,文件日志输出
SMTPAppender,发邮件输出日志
SocketAppender,Socket日志
NTEventLogAppender,Window NT日志
SyslogAppender,
JMSAppender,
AsyncAppender,
NullAppender

文件输出:RollingFileAppender

log4j.rootLogger=INFO,logfile
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.Threshold=INFO          //输出以上的INFO信息
log4j.appender.logfile.File=../logs/INFO_log    //保存log文件路径
log4j.appender.logfile.Append=true               //默认为true,添加到末尾,false在每次启动时进行覆盖
log4j.appender.logfile.MaxFileSize=10KB //一个log文件的大小,超过这个大小就又会生成1个日志 //KB ,MB,GB
log4j.appender.logfile.MaxBackupIndex=3 //最多保存3个文件备份
log4j.appender.logfile.layout=org.apache.log4j.HTMLLayout     //输出文件的格式
log4j.appender.logfile.layout.LocationInfo=true #是否显示类名和行数
log4j.appender.logfile.layout.Title=页面title       #html页面的<title>
############################## SampleLayout ####################################

#log4j.appender.logfile.layout=org.apache.log4j.SampleLayout

##############################PatternLayout###################################

#log4j.appender.logfile.layout=org.apache.log4j.PatternLayout

#log4j.appender.logfile.layout.ConversionPattern=%d%p[%c]-%m%n%d

##############################XMLLayout#######################################

#log4j.appender.logfile.layout=org.apache.log4j.XMLLayout

#log4j.appender.logfile.layout.LocationInfo=true#是否显示类名和行数

##############################TTCCLayout######################################

#log4j.appender.logfile.layout=org.apache.log4j.TTCCLayout

#log4j.appender.logfile.layout.DateFormat=ISO8601

#NULL,RELATIVE,ABSOLUTE,DATEorISO8601.

#log4j.appender.logfile.layout.TimeZoneID=GMT-8:00

#log4j.appender.logfile.layout.CategoryPrefixing=false##默认为true打印类别名

#log4j.appender.logfile.layout.ContextPrinting=false##默认为true打印上下文信息

#log4j.appender.logfile.layout.ThreadPrinting=false##默认为true打印线程名

#打印信息如下:

2007-09-1314:45:39,765[http-8080-1]ERRORcom.poxool.test.test-error成功关闭链接

###############################################################################

每天文件的输出:DailyRollingFileAppender

log4j.rootLogger=INFO,errorlogfile

log4j.appender.errorlogfile=org.apache.log4j.DailyRollingFileAppender

log4j.appender.errorlogfile.Threshold=ERROR

log4j.appender.errorlogfile.File=../logs/ERROR_log

log4j.appender.errorlogfile.Append=true#默认为true,添加到末尾,false在每次启动时进行覆盖

log4j.appender.errorlogfile.ImmediateFlush=true#直接输出,不进行缓存

#'.'yyyy-MM:每个月更新一个log日志

#'.'yyyy-ww:每个星期更新一个log日志

#'.'yyyy-MM-dd:每天更新一个log日志

#'.'yyyy-MM-dd-a:每天的午夜和正午更新一个log日志

#'.'yyyy-MM-dd-HH:每小时更新一个log日志

#'.'yyyy-MM-dd-HH-mm:每分钟更新一个log日志

log4j.appender.errorlogfile.DatePattern='.'yyyy-MM-dd'.log'#文件名称的格式

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

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

控制台输出:

log4j.rootLogger=INFO,consoleAppender

log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender

log4j.appender.consoleAppender.Threshold=ERROR

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

log4j.appender.consoleAppender.layout.ConversionPattern=%d%-5p%m%n

log4j.appender.consoleAppender.ImmediateFlush=true//直接输出,不进行缓存

log4j.appender.consoleAppender.Target=System.err//默认是System.out方式输出

!-----------------------------------------------------------------------------!!PATTERNFORMATSGLOSSARY!!-----------------------------------------------------------------------------!!%n–新的一行!!%m–打印错误信息!!%p–打印优先级信息(FATAL,ERROR,WARN,INFO,DEBUGorcustom)!!%r–打印程序开始后过去的毫秒数!!%%-打印输出的百分比!!!!-----------------------SOMEMORECLUTTERINYOURLOG-------------------------!!%c-nameofyourcategory(logger),%c{2}willoutputslasttwocomponents!!%t–打印产生该日志信息的线程名称!!%x–打印嵌套的上下文信息!!!!-------------------------SLOWPERFORMANCEFORMATS----------------------------!!%d–打印时间和日期,比如%d{ISO8601},%d{DATE},%d{ABSOLUTE},!!%d{HH:mm:ss,SSS},%d{ddMMMyyyyHH:mm:ss,SSS}等等!!%l-Shortcutfor%F%L%C%M!!%F-Java代码文件名称!!%L-Java代码错误的行数!!%C-Java类的名称,%C{1}将输出以“.”分割的后面一个!!%M-Java方法的名称!!!!------------------------------FORMATMODIFIERS-------------------------------!!%-any_letter_above-Left-justifyinmin.width(defaultisright-justify)!!%20any_letter_above-20char.min.width(padwithspacesifreqd.)!!%.30any_letter_above-30char.max.width(truncatebeginningifreqd.)!!%-10.10r-Example.Left-justifytimeelapsedwithin10-widefield.!!Truncatefrombeginningifwiderthan10characters.!!-----------------------------------------------------------------------------!

发送邮件:SMTPAppender

log4j.rootLogger=INFO,MAIL
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=DEBUG
log4j.appender.MAIL.BufferSize=10KB
[email protected]
log4j.appender.MAIL.SMTPHost=mail.myce.net.cn
log4j.appender.MAIL.Subject=Log4JMessage
[email protected]
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=%d-%c-%-4r[%t]%-5p%c%x-%m%n

数据库:JDBCAppender

log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:oracle:thin:@210.51.173.94:1521:YDB
log4j.appender.DATABASE.driver=oracle.jdbc.driver.OracleDriver
log4j.appender.DATABASE.user=ydbuser
log4j.appender.DATABASE.password=ydbuser
log4j.appender.DATABASE.sql=INSERTINTOA1(TITLE3)VALUES('%d-%c%-5p%c%x-%m%n')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=%d-%c-%-4r[%t]%-5p%c%x-%m%n
//数据库的链接会有问题,可以重写org.apache.log4j.jdbc.JDBCAppender的getConnection使用数据库链接池去得链接,可以避免insert一条就链接一次数据库。

相关推荐