Log4j日志技术精品PPT课件
Java标准日志工具Log4j的使用1(入门)
Java标准日志工具Log4j的使用1(入门)Log4j 是事实上的 Java 标准日志工具。
会不会用 Log4j 在一定程度上可以说是衡量一个开发人员是否是一位合格的 Java 程序员的标准。
如果你是一名 Java 程序员,如果你还不会用 Log4j,那你真的很有必要读一下这篇文章了。
很多朋友反映想写程序日志,但是却不知道怎么把日志写到日志文件里,而且 Java 这方面的资料似乎不多。
如《如何写log4j.xml日志配置文件》所述。
本文详细介绍了如何在项目中使用 Log4j 的步骤,并附加了一个例子性质的代码。
Why Log4j?有的朋友喜欢用System.out.println(String msg); 语句来调试代码。
这个确实是一个很好的调试工具。
但是随着项目的结束,或者问题的解决,这些语句需要我们一个个地揪出来手工删除?《如何一次性删除所有的system.out.println语句》,这个帖子里的这位网友就遇到了这样一个问题。
全部都删除干净,问题又来了:如果以后又出现问题了该怎么办呢?难道再次添加,问题解决后再次查找到删除?使用Log4j 就可以很好地解决上面的问题和矛盾。
Log4j 有一个日志级别,用来控制是否进行日志记录。
其由低到高的级别如下:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF将日志进行分级的目的就是在于可以灵活配置。
比如说如果日志级别限定于DEBUG,那么包括DEBUG 在内的,INFO、WARN、ERROR、FATAL、OFF 都会进行日志记录;而如果级别定义为INFO,那么INFO 以下的级别,像DEBUG 的日志就不会记录。
比如如下代码:view plaincopy to clipboardprint?1.Logger log = LogManager.getLogger(HelloWorld.class);("info通过 class 对象来获取 logger 对象");3.log.debug("debug通过 class 对象来获取 logger 对象");4.log.warn("warn通过 class 对象来获取 logger 对象");如果你的 Log4j 定义为输出到控制台,日志级别定义为 INFO,那么执行到上面语句块,控制台会输出以下日志信息:18:07:37,237 INFOHelloWorld:32 - info通过 class 对象来获取logger 对象18:07:37,245 WARNHelloWorld:34 - warn通过 class 对象来获取 logger 对象具体范例作者已经上传至附件,有兴趣的朋友可以去下载下来看看。
Log4j初步学习
• 6、更新appender
Log4j日志过滤器(未完成)
文件
每天产生一个日志文件 文件大小到达指定尺寸的 将日志信息以流格式发送
Log4j相关接口简介
• LoggerRepository • logger的仓库
• 一般来说,logger以名字为层次存放在repository 中,我们可以通过它查询已经创建的logger
Log4j相关类简介
• org.apache.log4j.config.PropertySetter
• • • •
•
则log1和log3是root的直接子节点,log2是log1的直接子节点
Log4j相关类简介
• Level
• 日志优先级,设置后logger只能输出高于该优先级的日志 • 常用优先级从低到高:debug、info、warn、error、fatal
• 实例化方法:Level.DEBUG/Level.ERROR等;
• logger.setLevel(); • logger.debug(“debug”);//不会输出
• (“info”);//会输出
• logger.error(“error”);//会输出
Log4j相关类简介
• Appender
• 控制日志输出的目的地
• org.apache.log4j.ConsoleAppender 控制台输出
•
• • • • •
org.apache.log4j.FileAppender
org.apache.log4j.DailyRollingFileAppender org.apache.log4j.RollingFileAppender 时候产生一个新的文件 org.apache.log4j.WriterAppender 到任意指定的地方 其它…… 具体使用可以参见log4j手册
log4j的几种用法
log4j的几种用法
Log4j是一个流行的Java日志框架,它提供了多种用法来帮助开发人员记录和管理应用程序的日志信息。
以下是几种常见的
Log4j用法:
1. 配置日志级别,Log4j允许开发人员根据不同的需求配置日志级别,包括DEBUG、INFO、WARN、ERROR等级别。
通过配置,可以控制哪些日志消息会被记录下来,从而方便开发人员调试和排查问题。
2. 输出日志到不同的目的地,Log4j支持将日志消息输出到不同的目的地,比如控制台、文件、数据库等。
开发人员可以根据需求配置日志输出的目的地,以便对日志进行集中管理和分析。
3. 日志格式化,Log4j允许开发人员自定义日志消息的格式,包括时间戳、日志级别、类名、方法名等信息。
通过格式化,可以使日志消息更易读,方便开发人员理解和分析。
4. 日志过滤,Log4j提供了过滤器功能,可以根据特定的条件过滤掉不需要记录的日志消息,从而减少日志的冗余和提高日志记
录的效率。
5. 动态配置,Log4j支持动态配置,开发人员可以在应用程序运行时动态修改日志配置,比如调整日志级别、更改日志输出目的地等,而不需要重启应用程序。
总之,Log4j提供了丰富的功能和灵活的配置选项,可以帮助开发人员高效地记录和管理应用程序的日志信息。
通过合理地使用Log4j,开发人员可以更好地了解应用程序的运行状况,及时发现和解决问题。
java日志学习总结(logback,log4j)PPT课件
Layout
• 日志信息输出格式
• yout=PatternLayout • org.apache.log4j.HTMLLayout(以HTML表格形式布局), • org.apache.log4j.PatternLayout(可以灵活地指定布局模式), • org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符
TimeBasedRollingPolicy,但是有两个限制,1不支持也不允许文件压 缩,2不能设置file属性,必须留空
rollingPolicy
• TimeBasedRollingPolicy:根据时间滚动 • 子节点<>必要,包含文件名以及%d{simpleDateFormate||null} • <maxHistory>可选,控制保留的归档文件最大数,超出则删除旧文件 • FixedWindowRollingPolicy: 根据固定窗口算法重命名文件的滚动策略 • 子节点<minIndex>窗口索引最小值<maxindex>窗口索引最大值,窗口过大
• <appender> • </appender> • <Logger> • </logger> • <root >(就是一个logger,名字叫root 不可变)
• <appender-ref ref=""/>
• </root>
• </configuration>
Appender
• ch.qos.logback.core.ConsoleAppender 控制台 • 子节点:<encoder><target> • 文件 • 子节点:<file>文件名,<append>追加还是覆盖<encode>,<prudent>是
JAVA中使用log4j及slf4j进行日志输出的方法详解
JAVA中使⽤log4j及slf4j进⾏⽇志输出的⽅法详解 JAVA中输出⽇志⽐较常⽤的是log4j,这⾥讲下log4j的配置和使⽤⽅法,以及slf4j的使⽤⽅法。
⼀、下载log4j的架包,并导⼊项⽬中,如下:⼆、创建log4j.properties配置⽂件1、log4j配置⽂件的位置:(1)如果是java project项⽬,则在项⽬的根⽬录下创建log4j.properties⽽不是在src⽬录下。
(2)如果是java web项⽬,则在src⽬录下创建log4j.properties配置⽂件,因为这个时候tomcat会去默认的加载这个配置⽂件,⽽不需要我们⼿动的加载log4j的配置⽂件。
log4j.properties配置内容如下:1 log4j.rootLogger=info,logTest2 log4j.appender.logTest=org.apache.log4j.DailyRollingFileAppender3 log4j.appender.logTest.File=/logs/LogTest/logTest.log4 log4j.appender.logTest.DatePattern='.'yyyy-MM-dd'.log'5 yout=org.apache.log4j.PatternLayout6 yout.ConversionPattern=[LogTestInfo] [%d][%c][%-5p]%m%n2、log4j配置项的说明:(1)第⼀⾏中rootLogger配置的是整个项⽬的⽇志输出,也可以只针对某⼀个模块进⾏⽇志输出,⽐如第⼀⾏配置成.logTest.project=info,logTest,则⽇志只输出项⽬路径com/logTest/project下的。
info为⽇志级别,可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。
log4j
FileAppender Threshold ImmediateFlush File
设置日志消息的初始级别 设置日志信息是否立即输出,默认为true 设置输出的文本 默认值是true,新增文件内容是否覆盖原 有内容,false为覆盖
org.apache.log4j.PatternLayout 可以灵活地指定布局模式 ConversionPattern=%m%n :指定怎样格式化指定的消息.
占位符参考log4j API
org.apache.log4j.SimpleLayout
包含日志信息的级别和信息字符串,内 置的简单布局没有提供自定义设置 包含日志产生的时间,线程,类别等等 信息
Append
DailyRollingFileAppender DatePattern的格式符 的格式符 Threshold '.'yyyy-MM
设置日志消息的初始级别 每月
#在配置文件中设置: '.'yyyy-ww 每周 ImmediateFlush 设置日志信息是否立即输出,默认为true #设置为每月输出 log4j.appender.MyAppenderName.DatePattern = '.'yy-MM '.'yyyy-MM-dd 每天 //在程序中使用 设置输出的文本 File //设置为每月输出 '.'yyyy-MM-dd-a 每天两次 myFile. setDatePattern ("'.true,新增文件内容是否覆盖原 '.'yyyy-MM-dd-HH 每小时 有内容,false为覆盖
LOG4J
Log4JLOG4J简介在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j。
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
log4j的作用一、什么是log4jLog4j 是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
二、日志简介日志指在程序中插入语句以提供调试信息。
使用日志能够监视程序的执行。
例如,用户利用日志可以获得关于应用程序故障的完整信息。
用户可以将调试语句(如System.out.println)插入到程序中以获得详细的调试信息。
三、项目中为什么要用log4j大家在编程时经常不可避免地要使用到一些日志操作,比如开发阶段的调试信息、运行时的日志记录及审计。
调查显示,日志代码占代码总量的4%。
通常大家可以简单地使用System.out.println()语句输出日志信息,但是往往会有一些判断,比如:if (someCondition){System.out.println("some information.");}这些判断造成正常的程序逻辑中混杂了大量的输出语句。
异常处理及日志log4j
异常处理及日志log4j1.1 异常处理基本知识Java中异常处理程序中错误分类:语法错误、运行时错误、逻辑错误什么是异常:异常是指程序运行过程中出现的一些错误称为异常。
Java 提供了一系列用于处理异常的类,所有异常类的父类:ng.Exception;能够处理所有的运行时异常。
Java中常用的异常类:Throwable——可以抛出的RuntimeException——系统异常(如内存溢出、磁盘已满等),一般无法修复Form atException——参数格式化异常(如将12.5转换成整数)IndexOutOfException——数组下标越界异常NullPointerException——空指针异常(访问空对象)异常处理:为了提高程序运行的健壮性,在程序出现异常时需要处理,称异常捕捉。
1. 捕捉异常,如何捕捉异常?捕捉异常使用try…catch语句块:Try/catch*Try/catch*/finally?Try/finally?2. 自定义异常、抛出异常在用户在输入数据违反逻辑约束的时候需要抛出异常信息时,可以采用自定义异常。
(例如:年龄为负数)声明某个方法可能抛出某种异常1.2 项目中的异常方式一、异常处理的普通原则i.把整个系统分为两大类异常:一类,业务异常,写自定义异常来代表;一类,程序异常,直接采用Exception(或者另外一个自定义异常)来代表。
项目要定义一个根自定义异常类,表示本项目中所有的异常;ii.在业务层、持久层把两类异常都抛出(不能把异常吃掉了);iii.在控制层捕捉异常,并分类处理(分类catch业务异常和系统异常,对业务异常,把异常信息取出,转发到提示页面显示给用户;对系统异常,用日志系统写入日志,便于以后维护解决Bug);iv.定义一个通用的显示提示信息的视图(可用用Jsp或者JS窗口)实现。
二、显示错误的方式i.直接在输入页面,显示错误优点:明确、详细,客户操作方便。
log4j日志使用案例
log4j日志使用案例log4j是一个功能强大的Java日志框架,被广泛应用于各种Java应用程序中。
它提供了灵活的配置选项和丰富的日志记录功能,可以帮助开发人员更好地理解和调试应用程序。
下面是十个使用log4j 的案例,以便更好地理解其用法和功能。
1. 日志级别控制log4j提供了不同的日志级别,包括DEBUG、INFO、WARN、ERROR和FATAL。
开发人员可以根据需要设置适当的日志级别,以过滤掉不需要的日志信息。
2. 日志输出格式log4j允许开发人员定义日志输出的格式,包括时间戳、日志级别、类名、方法名等信息。
通过自定义输出格式,开发人员可以更好地理解日志信息。
3. 日志文件分割log4j支持将日志信息分割到不同的文件中,以便更好地组织和管理日志。
可以根据日期、文件大小等条件进行日志文件的分割。
4. 日志滚动log4j支持日志滚动,即在达到一定条件后,将当前日志文件重命名并创建一个新的日志文件。
这样可以避免日志文件过大,提高日志的可读性和管理性。
5. 异常堆栈跟踪log4j可以自动记录异常堆栈跟踪信息,包括异常的类型、消息和堆栈轨迹。
这对于调试和排查错误非常有帮助。
6. 日志过滤器log4j提供了日志过滤器,可以根据特定的条件对日志进行过滤。
开发人员可以根据需要定义不同的过滤器,以便只记录感兴趣的日志信息。
7. 日志传递log4j支持将日志信息传递给其他系统,如数据库、消息队列等。
这样可以方便地对日志信息进行分析和监控。
8. 日志性能优化log4j提供了一些性能优化选项,如异步日志记录和缓冲区。
这些选项可以提高日志记录的效率,减少对应用程序性能的影响。
9. 日志配置文件log4j使用一个配置文件来定义日志的行为,包括日志级别、输出目标、格式等。
开发人员可以根据需要自定义配置文件,以满足特定的日志需求。
10. 日志动态调整log4j允许在运行时动态调整日志的行为,包括日志级别、输出目标等。
java log4j日志详解
浅谈JAVA中的日志文件log4的使用方法:log4是具有日志记录功能,主要通过一个配置文件来对程序进行监测有两种配置方式:一种程序配置,一种文件配置有三个主要单元要了解,Logger,appender,layout.logger是进行记录的主要类,appender是记录的方式,layout是记录的格式logger七种日志级别:debug,info,warn,error,fatal,all,off最常用的应该是debug()和info();而warn()、error()、fatal()仅在相应事件发生后才使用appender主要分三类,终端输出,文件输出,流输出ConsoleAppenderFileAppenderWriterAppenderlayout也分三类:简单格式,html格式,匹配格式SimpleLayoutHTMLLayoutPatternLayout输出简写:(用在PatternLayout)%m 输出代码中指定的消息%p 输出优先级%r 输出自应用启动到输出该log信息耗费的毫秒数%c 输出所属的类目,通常就是所在类的全名%t 输出产生该日志事件的线程名%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
一般使用了它就不需使用%c了[按照下面步骤来写吧!就可以得到我们所想要的日志文件哦!][按照顺序就可以将日志文件读出来了!]作用实例:程序配置一般过程:1.得到特定名称的logger2.得到其中一个layout3.根据layout得到appender4.logger添加appender5.logger设置级别6.logger输出有级别的日志信息程序:Logger logger = Logger.getLogger(Test.class.getName()) //取得loggerSimpleLayout simpleLayut = new SimpleLayout() //取得layoutFileAppender fa = new FileAppender(simpleLayout,"test.log") //取得ppenderlogger.addAppender(fa) //添加appenderlogger.set((Level)Level.DEBUG) //设置级别logger.debug("hihihihih") //记录信息文件配置过程:1.得到特定名称的logger2.加载配置文件 (配置文件做了2-5的工作)3.logger输出有级别的日志信息文件配置程序:1.Logger logger = Logger.getLogger(Test.class.getName()) //取得logger2.使用下面的配置加载3.输出信息文件配置分properties,xml读取properties:PropertyConfigurator.configure("logTest.properties");读取xml:DOMConfigurator.configure("src/logTest.xml");告别System.out.print()—J2SDK1.4新增Java日志框架(一)作为一名Java程序员,最熟悉的、使用最多的调用恐怕莫过于System.out.print(“…”)。
log4j讲解
本章内容
log4j 装箱与拆箱 Java中的反射机制
本章目标
掌握log4j的配置及使用 了解Java中的ห้องสมุดไป่ตู้本数据类型与封装数据类型 理解Java自动装箱与拆箱的特性 掌握使用反射获取类的结构信息 掌握使用反射调用类中的方法
1.log4j
1.1 什么是日志
public class Demo { public static void main(String args[]){ try 要在控制台和文件中同时输 { 出异常信息?如何处理? int result = 4 / 0; }catch(Exception e) { System.out.println(e.getMessage()); } }
2.装箱和拆箱
2.1 基本数据类型与包装数据类型
基本数据类型 int char 包装数据类型 Integer Character
short
long float double boolean byte
Shor
Long Float Double Boolean Byte
2.2 自动装箱
自动装箱即基本数据类型被自动包装为包装类
Class类及其作用
import ng.reflect.Method; public class Demo { public static void main(String[] args) { try { Class stu = Class.forName(args[0]); //获取类中所有的方法 Method[] methods = stu.getMethods(); for(int i=0;i<methods.length;i++){ System.out.println(methods[i].getName()); } }catch(Exception e) { e.printStackTrace(); } } }
log4j演讲ppt
Loggers
介绍
Loggers 输出信息类别level 为 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL等。 输出信息类别 、 、 、 、 、 、 等 log4j常用的优先级 常用的优先级FATAL>ERROR>WARN>INFO>DEBUG 常用的优先级 配置根Logger,其语法为: ,其语法为: 配置根 log4j.rootLogger = [ level ] , appenderName, appenderName, … 如果为log4j.rootLogger=WARN,则意味着只有WARN,ERROR,FATAL被输出,DEBUG,INFO将被屏蔽掉。 ,则意味着只有 被输出, 将被屏蔽掉。 如果为 被输出 将被屏蔽掉
Appenders
介绍
Appenders(输出源) Log4j允许日志请求被输出到多个输出源。用Log4j的话说,一个输出源被称做一个 允许日志请求被输出到多个输出源。 的话说, 允许日志请求被输出到多个输出源 的话说 一个输出源被称做一个Appender。 。 Appender包括 包括console(控制台), files(文件), GUI components(图形的组件), remote 包括 (控制台) (文件) (图形的组件) socket servers(socket服务), JMS(java信息服务), NT Event Loggers(NT的事件日志), and 服务) 信息服务) 的事件日志) ( 服务 ( 信息服务 ( 的事件日志 remote UNIX Syslog daemons(远程 的后台日志服务) (远程UNIX的后台日志服务)等。 的后台日志服务 同时,一个logger可以设置超过一个的 可以设置超过一个的appender。 同时,一个 可以设置超过一个的 。 log4j.appender.appender1=org.apache.log4j.FileAppender log4j.appender.appender2=org.apache.log4j.ConsoleAppender …… org.apache.log4j.ConsoleAppender(控制台) org.apache.log4j.FileAppender(文件) org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件) org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件) org.apache.log4j.WriterAppender(将日志讯息以串流格式发送到任意指定的地方) org.apache.log4j.JdbcAppender(将日志讯息保存到数据库中)
Log4j每天生成日志文件和按文件大小生成日志文件
一、按照一定时间产生日志文件,配置文件如下:# Setrootlogge r lev el to ERRO R and itsonlyappen der t o A1.log4j.ro otLog ger=E RROR,R# R is setto be a Da ilyRo lling FileA ppend er. log4j.appe nder.R=org.apac he.lo g4j.D ailyR ollin gFile Appen der log4j.app ender.R.Fi le=ba ckup.log log4j.appe nder.R.Dat ePatt ern = '.'y yyy-M M-ddlog4j.app ender.R.la yout=org.a pache.log4j.Pat ternL ayoutlog4j.ap pende r.R.l ayout.Conv ersio nPatt ern=%-d{yy yy-MM-dd H H:mm:ss} [%c]-[%p] %m%n 以上配置是每天产生一个备份文件。
其中备份文件的名字叫bac kup.l og。
具体的效果是这样:当天的日志信息记录在b ackup.log文件中,前一天的记录在名称为b ackup.log.yyyy-mm-dd的文件中。
类似的,如果需要每月产生一个文件可以修改上面的配置:将l og4j.appen der.R.Date Patte rn ='.'yy yy-MM-dd 改为l og4j.appen der.R.Date Patte rn ='.'yy yy-MM二、根据日志文件大小自动产生新日志文件配置文件内容如下:# Se t roo t log ger l evelto ER ROR a nd it s onl y app ender to A1.l og4j.rootL ogger=ERRO R,R # Ris se t tobe aRolli ngFil eAppe nder.log4j.ap pende r.R=o rg.ap ache.log4j.Roll ingFi leApp enderlo g4j.a ppend er.R.File=backu p.log#lo g4j.a ppend er.R.MaxFi leSiz e=100KB# Kee p one back up fi lel og4j.appen der.R.MaxB ackup Index=1l og4j.appen der.yo ut=or g.apa che.l og4j.Patte rnLay out log4j.appe ndery out.C onver sionP atter n=%-d{yyyy-MM-d d HH:mm:ss} [%c]-[%p] %m%n其中:#日志文件的大小log4j.appe nder.R.Max FileS ize=100KB# 保存一个备份文件lo g4j.a ppend er.R.MaxBa ckupI ndex=1 。
Log4j使用说明文档
文档编号:SINOSOFT-001 Log4j使用说明文档中科软科技股份有限公司寿险事业部2009年01月目录1Log4j简介 (3)1.1简介 (3)2原理说明 (3)2.1记录器Logger (3)2.2打印方法和级别 (4)3配置方法 (5)4配置文件说明 (7)5Log4j配置详解 (9)5.1定义配置文件 (9)5.2格式化日志信息 (10)1Log4j简介1.1 简介我们在编程时经常不可避免地要使用到一些日志操作,比如开发阶段的调试信息、运行时的日志记录及审计。
调查显示,日志代码占代码总量的4%。
通常大家可以简单地使用System.out.println()语句输出日志信息,但是在发布时,通常不想在正式的版本中打印这些开发时的调试信息,于是又要手工地把这些语句删除,所以大量的这样的System.out.println()调试语句会带来麻烦。
Log4j是Apache软件基金会Jakarta项目下的一个子项目,是用Java编写的优秀日志工具包。
通过Log4j可以在不修改代码的情况下,方便、灵活地控制任意粒度的日志信息的开启或关闭,然后使用定制的格式,把日志信息输出到一个或多个需要的地方。
并且,Log4j 还有一条平滑的学习曲线,在三分钟内就可学会它的简单使用。
随着使用深入,你会发现Log4J功能的强大,几乎可以满足日志方面的所有需要。
2原理说明2.1 记录器LoggerLogger类是在log4j1.2以后才有的,以前是用Category类来实现现在的Logger类的功能的。
从API可知,Logger类是Category类的子类。
Logger类的代码如下:package org.apache.log4j;public class Logger{// 创建和取回方法:public static Logger getRootLogger();public static Logger getLogger(String name);public static Logger getLogger(Class class1);// 打印方法:public void debug(Object message);public void info(Object message);public void warn(Object message);public void error(Object message);public void fatal(Object message);// 常用打印方法:public void log(Level l, Object message);}2.2 打印方法和级别Log4j中的日志级别分为五种:DEBUG、INFO、WARN、ERROR和FATAL,这五种级别从左到右级别依次增加。
Apache Log4J的应用技术及应用入门
public void info(Object message);
public void warn(Object message);
public void error(Object message);
public void fatal(Object message);
log4j允许程序员定义多个记录器,每个记录器有自己的 名字。 有一个记录器叫根记录器
它永远存在并且是类别等级的起始 且不能通过名字检索或引用 可以通过Logger.getRootLogger()方法取得它 而一般记录器通过Logger.getLogger(String name)方法。
通过控制配置文件,我们还可以灵活地修改日志信息的格 式,输出目的地等等方面
而单纯依靠System.out.println语句,显然需要做更多的 工作。
(6)为什么要使用Log4j
System.out.println一个缺点 就是当项目切入正式运行后,不希望这些日志输出到容 器的控制台上。 因为这样还会降低系统性能 但是如果手工逐个到程序中删除,又将为以后扩展维护 带来不便。 Log4J的方便性:通过修改配置文件,就可以决定log信息输 出到何处 这样,在系统开发阶段可以打印详细的log信息以跟踪系 统运行情况
日志信息的输出格式Layout(布局)
它控制了日志信息的显示内容的格式。
说明:
这里可简单理解为日志类别,日志要输出的地方和日志以何种形式 输出。 综合使用这三个组件可以轻松的记录信息的类型和级别,并可以在 运行时控制日志输出的样式和位置。
(2)记录器(对记录器来说可不关心log数据存放的事, 而这些应该是属于存放器的事)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
public class Demo1 { private static Logger logger = Logger.getLogger(Demo1.class);
public static void main(String[] args) { int x = 1; logger.debug("Demo1的x变量的值为:" + x);
Log4j日志技术
概述
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制 日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、 NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的 输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志 的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进 行配置,而不需要修改应用的代码。
}
指定输出器输出格式的几个例子
• 举例:
使用Log4j输出程序信息
控制输出级别:level 是日志记录的优先级,分为OFF、FATAL、ERROR、 WARN、INFO、DEBUG、ALL。
Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、 DEBUG。通过在这里定义的级别,您可以控制程序中log.error()、 log.warn() 、()、log.debug() 等方法是否输出。
◆ 值得一提的是org.apache.log4j.PatternLayout 以Pattern方式布局。 - pattern 的参数如下:
ConversionPattern参数的格式含义
使用Log4j记录异常
1、在工程中导入log4j开发包 2、在classpath下添加log4j的配置文件:log4j.properties 3、获得日志记录器,记录程序异常信息
输出格式(布局)layout
◆ 通过appender可以控制输出的目的地,而如果要控制输出的格式
就可通过log4j的layout组件来实现。通过配置文件定义一个appender的输出格式,Log4j提供的布局模式有以下几种: - org.apache.log4j.HTMLLayout,以HTML表格形式布局; - org.apache.log4j.PatternLayout,可以灵活地指定布局模式; - org.apache.log4j.SimpleLayout,包含日志信息的级别和信息字符串。 - org.apache.log4j.TTCCLayout,包含日志产生时间、线程、类别等等信息 。
如果需要 jms 的支持,则需要 jms API 下载地址为:
】
Log4j介绍
◆ Log4j 由三个重要的组件构成: - 日志信息的优先级 priority; - 日志信息的输出目的地 Appender; - 日志信息的输出格式(布局)layout。
日志的优先级
◆ 从低到高,依次有: - DEBUG(调试信息); - INFO错误信息); - FATAL(致命错误信息). 它们分别用来指定这条日志信息的重要程度。 如果定义了了输入的级别为INFO,则只有等于及高于这个级别的才进行处理,此时将输入I NFO,WARN,ERROR。 值得注意的是,级别中还有两个关键字: ALL:打印所有的日志, OFF:关闭所有的日志输出。
输出端 Appender
◆ log4j 提供了以下几种常用的输出目的地:
- org.apache.log4j.ConsoleAppender; 将日志信息输出到控制台 - org.apache.log4j.; 将日志信息输出到一个文件 - org.apache.log4j.DailyRolling; 将日志信息输出到一个指定周期变化文件名的文件中 - org.apache.log4j.Rolling; 将日志信息输出到一个指定大小的文件中,到达指定尺寸后
此外,通过Log4j其他语言接口,您可以在C、C++、.Net、PL/SQL程序 中使用Log4j,其语法和用法与在Java程序中一样,使得多语言分布式系统得 到一个统一一致的日志组件模块。而且,通过使用各种第三方扩展,您可以 很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中。
使用前的准备
◆ 下载 log4j 地址为:
◆ 你可能要用到的 jar 文件有: - commons-logging.jar - log4j-1.2.16.jar
【如果需要将日志发送到邮箱,则需要 javamail API,JAF API (the JavaBeans Activation Framework) 下载地址:
} }
Spring中log4j的切面编程
如果需要指定其它名称的properties配置文件时,在web.xml中添加
下面的配置信息,指向所需要的文件,使用classpath:则指向类目
录 例如classpath:log4j.xml
<context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.properties</param-value>
public class Demo2 { private static Logger log = Logger.getLogger(Demo2.class); public static void main(String[] args) { try { int x = 1/0; }catch(Exception e){ log.error(e,e.fillInStackTrace()); } }