您好,欢迎访问三七文档
Log4j学习笔记一、log4j的简介1、为什么使用日志开发阶段使用日志:发现程序的问题,排错产品阶段使用日志:记录运行的状况,发现bug并解决2、System.out.println的局限性不能在运行时打开或关闭打印功能不能指定选择包或类不能输出分级的信息只能输出文本信息,不能保存到文件或数据库不能改变输出的位置,只能打印到屏幕3、log4j的简介log4j是当前最流行的java日志处理框架Apache的子项目开源软件二、log4j的下载和安装log4j有3个版本:1.2最常用的版本;1.3已终止的版本;2.0实验型的版本因此,我们下载log4j1.2,点击以上”log4j”菜单,在弹出页面的左上角点击”download”,下载对应的log4j压缩包(例如:apache-log4j-1.2.16.zip),然后解压(最好将所有相关类库统一存放在一个目录下,例如:d:\javalib)将解压后的log4j-1.2.16.jar文件添加到当前项目的classpath中。三、log4j的基本使用importorg.apache.log4j.*;publicclassHelloLog4j{privatestaticLoggerlogger=Logger.getLogger(HelloLog4j.class);publicstaticvoidmain(String[]args){logger.debug(“thisisthemainmethod”);logger.info(“welcometofirstlog4j”);logger.error(“Thisisanerrormessage”)}}运行这个例子,需要log4j.properties,log4j.properties的配置如下:log4j.rootLogger=debug,appender1//设定log4j的级别和appenderlog4j.appender.appender1=org.apache.log4j.ConsoleAppender//appender的类型(终端)log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout//样式(普通TTCC)log4j.rootLogger=info.appender2//级别为infolog4j.appender.appender2=org.apache.log4j.FileAppender//appender保存到文件log4j.appender.appender2.File=c:/log4j.log或c:/log4j.htm//文件名(可以是html)log4j.appender.appender2.layout=org.apache.log4j.TTCCLayout或HTMLLayout可以使用HTML样式四、log4j的核心log4j的核心由以下4个部件组成:Logger:完成日志信息的处理Appender:设置日志信息的去向Layout:设置日志信息的输出样式配置文件:配置以上信息(log4j.properties或log4j.xml,名称可以改变)1、LoggerLogger可以定义输出的层次和决定信息的输出级别(怎样的信息可以输出)Logger输出的信息主要有以下8种:All,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF我们主要使用:DEBUG,INFO,WARN,ERROR4种Logger输出信息的级别:AllTRACEDEBUGINFOWARNERRORFATALOFF如果我们指定了输出的级别,则只能输出大于等于指定级别的信息,例如:我们指定输出级别为:INFO,则只能输出INFO,WARN,ERROR,FATAL,OFF级别的信息在程序中,我们可以使用Logger定义的方法进行对应级别信息的输出:logger.debug(“x=”+x);logger.info(“Systemstartedat”+newDate());logger.warn(“serverdown-returning”);logger.error(“cannotaccessserver”,e);2、AppenderAppender可以定义为日志添加器,可以指定将日志信息输出到哪里。Appender的定义方式:log4j.rootLogger=debug,appender名称log4j.appender.appender名称=appender的实现类log4j.appender.appender名称.属性=属性值例如:log4j.rootLogger=info,appender2//一个appenderlog4j.appender.appender2=org.apache.log4j.FileAppender//appender保存到文件log4j.appender.appender2.File=c:/log4j.htm//文件名(可以是html)log4j.appender.appender2.layout=org.apache.log4j.HTMLLayout//使用HTML样式可以指定多个appender,例如:log4j.rootLogger=info,appender1,appender2//二个appenderlog4j.appender.appender1=org.apache.log4j.ConsoleAppender//输出到终端log4j.appender.appender2=org.apache.log4j.FileAppender//保存到文件log4j.appender.appender2.File=c:/log4j.htm//文件名(可以是html)log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout使用文本样式log4j.appender.appender2.layout=org.apache.log4j.HTMLLayout使用HTML样式Appender实际上是接口,它的实现类有很多,常用的有:org.apache.log4j.ConsoleAppender(控制台)org.apache.log4j.FileAppender(文件)org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)org.apache.log4j.RollingFileAppender(文件大小达到指定尺寸时,产生新文件)org.apache.log4j.WriterAppender(将日志信息以串流格式发送到任意指定地方)org.apache.log4j.JdbcAppender(保存到数据库)3、LayoutLayout指定日志信息的格式。Layout设置的语法如下:log4j.appender.appenderName.layout=layout类名log4j.appender.appenderName.layout.属性=属性值log4j提供以下几种layout:org.apache.log4j.HTMLLayout(HTML格式)org.apache.log4j.TTCCLayout(包含日志的时间,线程,级别,类名,日志信息等)org.apache.log4j.SimpleLayout(只有简单信息,包含:级别,信息)org.apache.log4j.PatternLayout(自定义日志信息的格式)PatternLayout自定义日志信息输出格式,一般使用以下信息定义格式:%p:日志级别,即DEBUGINFOWARNERROR等%r:输出自从应用启动到输出日志时的毫秒数%t:输出产生该日志的线程名%f:输出日志所属的类别名%c:输出日志所属的类的全名%d:输出日志的日期和时间,格式为%d{yyyy-MM-ddHH:mm:ss:SSS}%l:输出日志发生的行号%M:输出日志所属的方法%m:输出日志信息本身%n:换行PatternLayout举例:log4j.rootLogger=debug,appender1log4j.appender.appender1=org.apache.log4j.ConsoleAppenderlog4j.appender.appender1.layout=org.apache.log4j.PatternLayoutlog4j.appender.appender1.layout.ConversionPattern=%r[%p]-%d{yyyy-MM-ddHH:mm:ss}-%l-%t%10m%n//此处的%10m表示%m只能小于等于10个字符4、rootLoggerrootLogger表示对当前应用中所有的类都采用相同的日志记录器。我们可以设置对应用中不同包中的类,采用不同的日志记录器,例如:#log4j.rootLogger=debug,appender1log4j.logger.com.fhc.manager=info,appender1log4j.logger.com.fhc.service=debug,appender1,appender2以上配置表示,为com.fhc.manager包下的类采用info级别的日志记录器,并使用appender1;而为com.fhc.service包下的类采用debug级别的日志记录,并同时使用appender1和appender2。注意:此时,如果设置了log4j.rootLogger,那么rootLogger会同时应用,因此需要将rootLogger注释掉。5、log4j在web-app中的初始化web.xmlcontext-paramparam-nameprops/param-nameparam-value/WEB-INF/log4j.properties/param-value/context-paramlistenerlistener-classcart.listener.SCServletContextListener/listener-class/listener初始化方法中添加privatevoidinitLog4j(ServletContextcontext){Stringprefix=context.getRealPath(/);Stringprops=context.getInitParameter(props);if(props!=null){PropertyConfigurator.configure(prefix+props);}Loggerlogger=Logger.getLogger(SCServletContextListener.class);}6、log4j的xml配置模板?xmlversion='1.0'encoding='UTF-8'?!DOCTYPElog4j:configurationSYSTEMlog4j.dtdlog4j:configurationxmlns:log4j==STDOUTclass=org.apache.log4j.ConsoleAppenderlayoutclass=org.apache.log4j.PatternLayoutparamname=ConversionPatternvalue=[%d{yyyy-MM-ddHH:mm:ss}][%t][%p][%m]//layout/appenderappendername=ROLLINGFILEclass=org.apache.
本文标题:log4j教程
链接地址:https://www.777doc.com/doc-5266210 .html