您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > log4j和slf4j日志框架入门
Java私塾《日志框架入门》——深入浅出系列精品教程n介绍Log4j是Apache的一个开放源代码项目,通过使用Log4j,可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器等;也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。n是什么一个开源的、轻量级的、用于日志管理的框架n有什么Log4j由三个重要的组件构成:日志信息的输出格式,日志信息的优先级,日志信息的输出目的地。日志信息的优先级用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。真正高质量培训签订就业协议网址::460190900Log4j是什么、有什么《日志框架入门》——深入浅出系列精品教程n能干什么主要用来进行日志记录的管理,包括对日志输出的目的地,输出的信息级别和输出的格式等。n日志类别的层次结构(Loggers)Log4j首要的相对于简单的使用System.out.println()方法的优点是基于它的在禁止一些特定的信息输出的同时不妨碍其它信息的输出的能力。这个能力源自于日志命名空间,也就是说,所有日志声明的空间,它根据一些开发员选择的公式而分类。Logger被指定为实体,Logger的名字是大小写敏感的,它们遵循以下的命名语法规则:用“.”来划分层次级别,如:cn.javass.test真正高质量培训签订就业协议网址::460190900Log4j能干什么《日志框架入门》——深入浅出系列精品教程nLog4j有如下级别OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,可以控制到应用程序中相应级别的日志信息的开关。n几个重要规则1:级别的控制,就是只要大于等于指定的控制级别,就可以输出2:如果有多个logger,都可以匹配输出,则每个logger都产生输出,其中根logger匹配所有的输出;而级别控制来源于路径最详细的logger。n如何获得日志操作类publicclassA{privatestaticLoggerlogger=Logger.getLogger(A.class);}真正高质量培训签订就业协议网址::460190900日志级别《日志框架入门》——深入浅出系列精品教程n输出源Log4j允许日志请求被输出到多个输出源。用Log4j的话说,一个输出源被称做一个Appender。一个logger可以设置超过一个的appender。n常见Appenderorg.apache.log4j.ConsoleAppender(控制台)org.apache.log4j.FileAppender(文件)org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)org.apache.log4j.jdbc.JDBCAppender(把日志用JDBC记录到数据库中)真正高质量培训签订就业协议网址::460190900输出源《日志框架入门》——深入浅出系列精品教程n布局布局就是指输出信息的格式。在Log4j中称作Layoutn常见Layoutorg.apache.log4j.HTMLLayout(以HTML表格形式布局),org.apache.log4j.PatternLayout(可以灵活地指定布局模式),org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)真正高质量培训签订就业协议网址::460190900布局《日志框架入门》——深入浅出系列精品教程%m输出代码中指定的消息%p输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL%r输出自应用启动到输出该log信息耗费的毫秒数%c输出所属的类目,通常就是所在类的全名%t输出产生该日志事件的线程名%n输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”%d输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyMMMddHH:mm:ss,SSS},输出类似:2002年10月18日22:10:28,921%l输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)真正高质量培训签订就业协议网址::460190900最常用的PatternLayout《日志框架入门》——深入浅出系列精品教程n配置Log4j有两种配置方式,一种是xml格式,一种是properties格式。都是放置到classpath下面。默认名称分别是:log4j.xml和log4j.propertiesnproperties配置示例如下:log4j.rootLogger=error,javass.Console,javass.Filelog4j.appender.javass.Console=org.apache.log4j.ConsoleAppenderlog4j.appender.javass.Console.layout=org.apache.log4j.PatternLayoutlog4j.appender.javass.Console.layout.ConversionPattern=%d{HH:mm:ss,SSS}%5p(%C{1}:%M)-%m%n真正高质量培训签订就业协议网址::460190900配置示例-1《日志框架入门》——深入浅出系列精品教程log4j.appender.javass.File=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.javass.File.file=javass.loglog4j.appender.javass.File.DatePattern=.yyyy-MM-ddlog4j.appender.javass.File.layout=org.apache.log4j.PatternLayoutlog4j.appender.javass.File.layout.ConversionPattern=%d{HH:mm:ss,SSS}%5p(%C{1}:%M)-%m%nlog4j.logger.cn.javass=debug真正高质量培训签订就业协议网址::460190900配置示例-2《日志框架入门》——深入浅出系列精品教程通过前面的讲解,我们可以在配置文件中看出以下关系:n每个Appender都要引用自己的Layout。n每个Logger都可以指定一个级别,同时引用多个Appender;而一个Appender也同时可以被多个Logger引用。真正高质量培训签订就业协议网址::460190900Appender、Layout、Logger三者之间的关系《日志框架入门》——深入浅出系列精品教程nxml配置示例如下:?xmlversion=1.0encoding=UTF-8?!DOCTYPElog4j:configurationSYSTEMlog4j.dtdlog4j:configurationxmlns:log4j='=testclass=org.apache.log4j.ConsoleAppenderlayoutclass=org.apache.log4j.PatternLayoutparamname=ConversionPatternvalue=[%d{ddHH:mm:ss,SSS\}%-5p][%t]%c{2\}-%m%n//layout/appender真正高质量培训签订就业协议网址::460190900配置示例-3《日志框架入门》——深入浅出系列精品教程appendername=fileclass=org.apache.log4j.DailyRollingFileAppenderparamname=Filevalue=E:/test.log/paramname=DatePatternvalue='.'yyyy-MM-dd'.log'/layoutclass=org.apache.log4j.PatternLayoutparamname=ConversionPatternvalue=[%d{MMddHH:mm:ssSSS\}%-5p][%t]%c{3\}-%m%n//layout/appenderloggername=cn.javassadditivity=truelevelvalue=debug/appender-refref=file//loggerrootlevelvalue=error/appender-refref=test/appender-refref=file//root/log4j:configuration真正高质量培训签订就业协议网址::460190900配置示例-4《日志框架入门》——深入浅出系列精品教程n首先要注意,log4j.xml优先于log4j.properties,如果同时存在log4j.xml和log4j.properites,以log4j.xml为准。n在log4j.properties里,控制级别的时候,只能打印出大于指定级别的所有信息;但是在log4j.xml中可以通过filter来完成过滤:典型的引用是只打印出某种级别的信息。appendername=log.fileclass=org.apache.log4j.DailyRollingFileAppenderfilterclass=org.apache.log4j.varia.LevelRangeFilterparamname=levelMinvalue=info/paramname=levelMaxvalue=info/paramname=AcceptOnMatchvalue=true//filter/appender真正高质量培训签订就业协议网址::460190900log4j.xml比log4j.properties多的功能-1《日志框架入门》——深入浅出系列精品教程n可以通过logger的additivity=“false”属性,来设置多个logger是否重复输出同一条信息loggername=cn.javass1additivity=falselevelvalue=debug/appender-refref=log.conso
本文标题:log4j和slf4j日志框架入门
链接地址:https://www.777doc.com/doc-6444448 .html