log4j 详细讲解

级别:DEBUG>INFO>ERROR

(一)什么是log4j?
log4j是Apache的一个开放源码项目,对于JAVA的developer来说,这是一个很好的日志管理工具,可以通过log4j来控制日志语句的输出,输出的目的地可以是控制台,文件,邮件或者数据库等;
对于一个日志管理工具来说,我们需要考虑哪些关键点,不外如下三种:
1,日志的输出目的地;
2,日志的输出格式;
3,日志的优先级;
log4j中,developer可以自定义日志的输出级别:
DEBUG,INFO,WARN,ERROR,TATAL;
还有两个关键字:
ALL:输出所有的日志;
OFF:关闭所以的日志输出;
那么log4j用什么方式来让developer来使用呢,有两种方式:Porperties和XML。
(二)配置文件的示例代码
(1)Properties文件
log4j.rootlogger = DEBUG,stdout
#log4j常用的优先级FATAL>ERROR>WARN>INFO>DEBUG
log4j.logger.org=ERROR,A1
#A1设置输出地A1到文件,文件大小达到指定尺寸时产生一个新的文件
log4j.appender.A1 = org.apache.log4j.RollingFileAppender
###文件位置###
log4j.appender.A1.File=orglog.log
###文件大小
log4j.appender.A1.MaxFileSize=500KB
log4j.appender.A1.MaxBackupIndex=50
log4j.appender.A1.Append=true
###设置A1的输出布局格式PatterLayout(可以灵活的指定布局格式)##
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{ISO8601}- [%p] [%C{1}]-%m%n
#stdout应用于控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
###设置stdout的输出布局格式PatterLayout(可以灵活得指定布局格式)##
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %c -%m%n

怎么使用呢,在程序的开始位置定义Logger
static Logger logger = Logger.getLogger(myClass.getName())
然后在你需要日志的地方,添加这样代码即可
logger.debug("在这里填写要输出的日志信息即可");
(2)XML文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration
    <appender name="appender" class="org.apache.log4j.FileAppender">
        <param name="File" value="log.txt">定义日志输出的文件
        <param name="Append" value="false">
        <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d[%t]%p - %m%n"/>定义输出日志时的时间格式
         </layout>
    </appender>
    <root>
        <priority value="debug"/>定义日志输出的级别
        <appender-ref ref="appender"/>
    </root> 
</log4j:configuration>   
(三)log4j的下载与配置
       版本:logging-log4j-1.2.14.zip
2,配置:将zip压缩包解压后,将其中的log4j-1.2.14.jar放在WEB-INF/lib目录下,并且加入到CLASSPATH中,然后将配置文件放在WEB-INF/src或WEB-INF/classes
(四)日志输出格式和输出位置
1,日志的输出格式
四种日志输出样式:
@1,org.apache.log4j.HTMLLayout(HTML样式布局)
@2,org.apache.log4j.PatternLayout(自由指定样式)
@3,org.apache.log4j.SimpleLayout(包含日志级别与信息的样式)
@4,org.apache.log4j.TTCCLayout(包含日志时间,线程,类别等信息的样式)
2,打印格式格式化日志信息的打印参数:
@1,%m:输出代码中指定的信息;
@2,%p:输出优先级,即DEBUG,INFO,INFO,WARN,ERROR,FATAL;
@3,%r:输出自应用启动到输出改log信息耗费的毫秒数;
@4,%c:输出所属的类目,通常就是所在类的全名;
@5,%t:输出产生该日志事件的线程名;
@6,%n:输出一个回车换行符,Windows平台为“rn”,UNIX平台为“n”;
@7,%d :输出日志时间点的日期或时间
@8,%l:输出日志时事件的发生位置,包括类目名,发生的线程,以及在代码中的行数。
3,日志输出位置的方式:
@1,ConsoleAppender:将日志输出到控制台;
@2,FileAppende:将日志输出到文件
@3,DailyRollingFileAppender:扩展FileAppender,每天产生一个日志文件
@4,RollingFileAppender:扩展FileAppender,备份容量达到一定大小的日志文件
@5,WriterAppender:将日志信息以流格式发送到任意指定的地方;
@6,JDBCAppender:将日志输出到数据库;
@7,SMTPAppender:把日志发送至邮件。
示例代码:
(1)ConsoleAppender:将日志输出到控制台
log4j.appender.A1=org.apache.log4j.ConsoleAppender(指定输出到控制台)
log4j.appender.A1.Threshold=DEBUG(指定输出类别)
log4j.appender.A1.Target=System.out
log4j.appender.A1.layout=org.apache.log4j.PatternLayout(指定输出布局)
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %c -%m%n 
#[%-5p]%d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
(2)FileAppende:将日志输出到文件
log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.FILE.File=file.log(指定输出的路径及文件名)
log4j.appender.FILE.Append=false
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %c -%m%n 
#[%-5p]%d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
(3)RollingFileAppender:扩展FileAppender,备份容量达到一定大小的日志文件
log4j.appender.A1=org.apache.log4j.RollingFileAppender
###文件位置##
log4j.appender.A1.File=orglog.log
#文件大小
log4j.appender.A1.MaxFileSize=500KB
log4j.appender.A1.MaxBackupIndex=50
log4j.appender.A1.Append=true
###设置A1的输出布局格式##
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{ISO8601}- [%p] [%C{1}]-%m%n
(4)JDBCAppender:将日志输出到数据库
log4j.appender.A1=org.apache.log4j.jdbc.JDBCAppender(指定输出到数据库)
log4j.appender.A1.URL=jdbc:mysql://localhost:3306/myApp(指定数据库URL)
log4j.appender.A1.driver=com.mysql.jdbc.Driver(指定数据库driver)
log4j.appender.A1.user=root
log4j.appender.A1.password=111
log4j.appender.A1.sql=INSERT INTO LOG4J (Message) VALUES('%d{ISO8601} - [%p] [%c{1}] -%m%n')(组织SQL语句)
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{ISO8601}- [%p] [%C{1}]-%m%n
(5)SMTPAppender:把日志发送至邮件
log4j.appender.A1.=org.apache.log4j.net.SMTPAppender
log4j.appender.A1.Threshold=FATAL
log4j.appender.A1.BufferSize=10
log4j.appender.A1.From=gf2008@1212.com(发件人)
log4j.appender.A1.SMTPHost=mail.1212.com(SMTP服务器)
log4j.appender.A1.Subject=Log4J Message
log4j.appender.A1.To=gf2008@1212.com(收件人)
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{ISO8601}- [%p] [%C{1}]-%m%n


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值