log4j培训ppt
- 格式:pptx
- 大小:449.45 KB
- 文档页数:27
Jakarta Log4j 培训Part 1 : 什么是log4j?log4j是一个Java日志包。
每一个大型的应用程序都需要有日志或者跟踪API,据此,1996年 E. U. SEMPER 项目开发了自己的日志API,这就是log4j API 的前身。
后来经过多次的修改、润色以至重写,这个API发展成了现在Apache Public License下的完善的日志API。
最新的Log4j版本,包括全部的源码,class文件和文档,你可以在/log4j上找到。
顺便,Log4j已经给C, C++,PHP, C#, Python, Ruby, and Eiffel 语言都提供了接口。
Part 2 :做日志有那些好处? 我们为什么选择Log4j?日志是开发和维护大型应用的重要工具。
(1)日志使用简单;(2)在某些场合,比如分布式应用或者多线程环境下,调试器(debugger)可能不适用,最好采用日志的方式;(3)日志可以提供详尽的运行时上下文,从而有助于调试和开发应用;(4)日志一旦被插入,运行时就可以减少很多交互,可以大大提高开发效率;(5)可以作为监控工具使用,比如apache的日志。
Log4j的优点:(1)它提供关于运行程序的准确的环境。
一旦代码被插入,不需要人工干预就可以产生调试信息。
使用者一旦在程序中添加了用于log输出的代码,他们就能通过一个外部的配置文件对这些log信息进行运行时控制而无需重新编译源代码。
(2).通过修改配置文件,就可以按照自己喜欢的格式决定log信息输出到何处(console,文件,...),是否输出。
这样,在系统开发阶段可以打印详细的log 信息以跟踪系统运行情况, 而在系统稳定后可以关闭log输出,从而在能跟踪系统运行情况的同时,又减少了垃圾代码(System.out.println(...)等)。
(3)使用log4j,需要整个系统有一个统一的log机制,有利于系统的规划。
第17章使用log4j进行日志管理17.1、Log4j简介作用:1、跟踪代码的运行轨迹。
2、输出调试信息.三大组成:1、Logger类-生成日志。
2、Appender类-定义日志输出的目的地。
3、Layout类-指定日志输出的格式。
17.1.1 Logger组件日志共分为5种级别,从高到底(从严重到轻微)排序为:FATAL—严重的错误,可能会导致程序不能正常运行.ERROR –错误,影响程序的正常运行。
WARN –警告,不会影响程序的运行。
最好将此问题修正。
INFO –一般信息。
不影响程序的运行。
可能是用户的调试信息。
可有可无。
等同于syserrDEBUG –一般的信息。
等同于sysout上面五种级别分别对应以下几个方法P255fatal(Object)error(Object)warn(Object)info(Object)debug(Object)当信息大于或是等于配置的级别时才会输出日志。
17.1.2、Appender组件(仅要求记住两个)Console –控制台。
org.apache.log4j.ConsoleAppenderFile - 文件。
org.apache.log4j.FileAppender , org.apache.log4j.RollingFileAppender17.1.3、Layout组件功能是定义日志的输出格式org.apache.log4j.HTMLLayoutorg.apache.log4j.PatternLayout (自定义)org.apache.log4j.SimpleLayout对于自定义格式,see page 256 chart 17-1。
%d %p %c %m%n是我经常用的格式,要求记住.%d –具体的时间.%p –优先级%c –信息的输入类%m%n –信息文本17.2、Log4j的基本使用方法(以下以项目ch16为例)步1、将log4j.jar文件,Copy到WEB-INF/lib目录下。
log4j2基础⼊门(超详细)⼀.导包 (2)将下载的.zip(windows中)加压,并将1. log4j-api-×××.jar2. log4j-core-×××.jar 导⼊项⽬中,并BuildPath⼆.调⽤ (1)log4j的级别 log4j规定了默认的⼏个级别:all<trace<debug<info<warn<error<fatal<off (off是最⾼等级,即关闭所有⽇志记录;all是最低等级,即打开所有⽇志记录)Level描述ALL各级包括⾃定义级别DEBUG指定细粒度信息事件是最有⽤的应⽤程序调试ERROR错误事件可能仍然允许应⽤程序继续运⾏FATAL指定⾮常严重的错误事件,这可能导致应⽤程序中⽌INFO指定能够突出在粗粒度级别的应⽤程序运⾏情况的信息的消息OFF这是最⾼等级,为了关闭⽇志记录TRACE指定细粒度⽐DEBUG更低的信息事件WARN指定具有潜在危害的情况 (2)log4j测试 导包后测试⼀下log4j。
代码如下: public class Log4jTest {private static Logger logger = LogManager.getLogger(Log4jTest.class.getName());public static void main(String[] args) {logger.trace("entry"); //trace级别的信息,和logger.entry() 基本⼀个意思,但已经过时logger.debug("我是debug信息");("我是info信息");logger.warn("我是warning信息");logger.error("我是error信息");logger.fatal("我是fatal信息");logger.trace("exit");////和entry()对应的结束⽅法,和logger.exit()⼀个意思,同样已经过时}} 输出信息:ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. Set system property 'log4j2.debug' to show Log4j2 internal initialization logging. 09:48:26.531 [main] ERROR com.sp.test.Log4jTest - 我是error信息09:48:26.533 [main] FATAL com.sp.test.Log4jTest - 我是fatal信息 结果只输出了error和fatal的信息,并且给出了原因,原因就是:没有找到log4j2的配置⽂件,便使⽤了默认的配置,仅仅显⽰error及以上级别的⽇志。
1 log4j初步1.1log4j介绍在项目运行的过程中,可能会出现一些需要保存或者显示的信息,这些信息包括:(1)用户操作的错误信息;(2)程序运行的过程;(3)代码调试的信息等。
我们希望周期性的将这些信息记录在日志文件或者打印到控制台,这已经成为一个很常见的需求。
举一个简单的例子,在编程的时候常常会遇到这样的问题:一个JavaBean里面有一些操作,但是有可能出现异常,此时我们想要了解到底是哪个地方出现的异常。
要求:如果出现异常,将内容保存在日志文件,供日后用户参考。
如果用传统的方法,可以自己写一段读写文件的代码,每当使用记录日志功能时,调用读写文件的模块,将这些信息写到日志文件中。
不过,该功能太公用,很多项目里面都要出现,各自编写自己的代码,无法标准化。
于是,Apache团队编写了log4j的支持包,经过了严密的测试,可以让我们用比较简单的方法来处理日志问题。
本节使用一个简单的案例来说明问题。
要求:编写美元转人民币的用例。
首先使用IDE 建立一个Web项目。
用户从表单将数据提交,我们希望一个JavaBean来实现转换过程,所以另外编写一个类Converter。
Converter.javapackage util;public class Converter {public static String convert(String str) {double rate = 6;double usd = Double.parseDouble(str);double rmb = usd * rate;String strRmb = String.valueOf(rmb);return strRmb;}}最后在convertForm.jsp中提供了一个表单,并调用Converter。
convertForm.jsp<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@page import="util.Converter"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd">编写完成后,运行jsp页面,输入数值“100”,如图1-1所示。
Log4j学习笔记一、log4j的简介1、为什么使用日志◆开发阶段使用日志:发现程序的问题,排错◆产品阶段使用日志:记录运行的状况,发现bug并解决2、System.out.println的局限性◆不能在运行时打开或关闭打印功能◆不能指定选择包或类◆不能输出分级的信息◆只能输出文本信息,不能保存到文件或数据库◆不能改变输出的位置,只能打印到屏幕3、log4j的简介◆log4j是当前最流行的java日志处理框架◆Apache的子项目◆开源软件二、log4j的下载和安装/log4j◆log4j有3个版本:1.2 最常用的版本;1.3 已终止的版本;2.0 实验型的版本◆因此,我们下载log4j 1.2 ,点击以上”log4j”菜单,在弹出页面的左上角点击”download”,下载对应的log4j压缩包(例如:apache-log4j-1.2.16.zip),然后解压(最好将所有相关类库统一存放在一个目录下,例如:d:\javalib)◆将解压后的log4j-1.2.16.jar文件添加到当前项目的classpath中。
三、log4j的基本使用import org.apache.log4j.*;public class HelloLog4j{private static Logger logger=Logger.getLogger(HelloLog4j.class);public static void main(String [] args){logger.debug(“this is the main method”);(“welcome to first log4j”);logger.error(“This is an error message”)}}运行这个例子,需要log4j.properties,log4j.properties的配置如下:log4j.rootLogger=debug,appender1 //设定log4j的级别和appenderlog4j.appender.appender1=org.apache.log4j.ConsoleAppender//appender的类型(终端)yout=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)yout=org.apache.log4j.TTCCLayout或HTMLLayout 可以使用HTML样式四、log4j的核心log4j的核心由以下4个部件组成:⏹Logger:完成日志信息的处理⏹Appender:设置日志信息的去向⏹Layout:设置日志信息的输出样式⏹配置文件:配置以上信息(log4j.properties或log4j.xml,名称可以改变)1、Logger◆Logger可以定义输出的层次和决定信息的输出级别(怎样的信息可以输出)◆Logger输出的信息主要有以下8种:All,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF我们主要使用:DEBUG,INFO,WARN,ERROR4种◆Logger输出信息的级别:All<TRACE<DEBUG<INFO<WARN<ERROR<FATAL<OFF◆如果我们指定了输出的级别,则只能输出大于等于指定级别的信息,例如:我们指定输出级别为:INFO,则只能输出INFO ,W ARN,ERROR,FATAL,OFF级别的信息◆在程序中,我们可以使用Logger定义的方法进行对应级别信息的输出:logger.debug(“x=”+x);(“System started at ”+new Date());logger.warn(“server down - returning”);logger.error(“can not access server”,e);2、Appender◆Appender可以定义为日志添加器,可以指定将日志信息输出到哪里。
Log4j 简介一. 概述在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j。
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
此外,通过Log4j其他语言接口,您可以在C、C+ +、.Net、PL/SQL 程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块。
而且,通过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP 应用中。
二:log4j的基本配置说明Log4j提供两种方式的配置文件,XML文件和properties属性文件,下面我以properties格式的配置文件为例进行说明。
1:定义一个Logger。
在定义Logger的时指定该Logger的级别及输出目的地(即输出端Appender,可以多个)。
定义Logger的格式如下:log4j.rootLogger=loggerLevel, appenderName1, appenderName2, …. appenderNameN例:log4j.rootLogger=DEBUG, A1, A2, A3该Logger的日志输出级别为DEBUG( 日志级别还包括有:INFO, WARN, ERROR ),同时定义三个输出端Appender:A1,A2,A32:定义Appender的输出目的地。
定义一个Appender的输出目的地的格式如下:log4j.appender.appenderName = .of.appender.class log4j提供的输出端有:(前缀为org.apache.log4j.)ConsoleAppender:将日志信息输出到控制台FileAppender:将日志信息输出到一个文件WriterAppender:将日志信息以流格式发送到任意指定的地方JDBCAppender:通过JDBC把日志信息输出到数据库中(参考下面实例)DailyRollingFileAppender:将日志信息输出到一个文件,并且每天输出到一个新的日志文件中RollingFileAppender:将日志信息输出到一个文件,通过指定文件的的尺寸,当文件大小到达指定尺寸的时候会自动把文件改名(参考下面实例)3:定义Appender的布局模式。
详细讲解Java中log4j的使用方法发布时间:2007.07.31 08:09来源:赛迪网作者:dxaw1、Log4j是什么?Log4j可以帮助调试(有时候debug是发挥不了作用的)和分析,要下载和了解更详细的内容,还是访问其官方网站吧: /log4j 。
2、Log4j的概念Log4j中有三个主要的组件,它们分别是 Logger、Appender和Layout,Log4j 允许开发人员定义多个Logger,每个Logger拥有自己的名字,Logger之间通过名字来表明隶属关系。
有一个Logger称为Root,它永远存在,且不能通过名字检索或引用,可以通过Logger.getRootLogger()方法获得,其它Logger通过 Logger.getLogger(String name)方法。
Appender则是用来指明将所有的log信息存放到什么地方,Log4j中支持多种appender,如 console、files、GUI components、NT Event Loggers等,一个Logger可以拥有多个Appender,也就是你既可以将Log信息输出到屏幕,同时存储到一个文件中。
Layout的作用是控制Log信息的输出方式,也就是格式化输出的信息。
Log4j中将要输出的Log信息定义了5种级别,依次为DEBUG、INFO、WARN、ERROR和FATAL,当输出时,只有级别高过配置中规定的级别的信息才能真正的输出,这样就很方便的来配置不同情况下要输出的内容,而不需要更改代码,这点实在是方便啊。
3、Log4j的配置文件虽然可以不用配置文件,而在程序中实现配置,但这种方法在如今的系统开发中显然是不可取的,能采用配置文件的地方一定一定要用配置文件。
Log4j支持两种格式的配置文件:XML格式和Java的property格式,本人更喜欢后者,首先看一个简单的例子吧,如下:首先,是设置root,格式为 log4j.rootLogger=[level],appenderName, ...,其中level 就是设置需要输出信息的级别,后面是appender的输出的目的地,appenderName就是指定日志信息输出到哪个地方。
1Log4j本章要点本章主要讲解Log4j的内容,在现在的软件开发中,对日志的处理成为不可或缺的部分,其中Log4j是其中的最好的工具,并且我们后面章节的案例中就需要使用Java的日志处理。
本章通过若干具体例子讲解Log4j的核心概念和编程代码。
1.1Java日志处理在我们开发程序的过程中,经常为了排错的需要,增加很多的打印输出语句;一般就是使用System.out.println(“hello”)这样的语句。
这样的打印语句对于我们对程序的排错很有帮助,但是也很麻烦,因为有一些语句是临时增加的,我们需要在程序交付的时候,这些信息就不需要输出了,那我们还需要手工把这些打印语句删除或者注释掉。
于是为了方便编程人员类似的需求,出现的完成日志输出和记录的日志工具供我们使用。
在Java 平台的软件开发中,主要使用 Log4j或者Java Logging API作为日志处理的解决方案。
Java Logging API是Java SE中的API,但是Log4j提供的功能更多,使用上更加方便。
所以本章主要讲解Log4j的使用。
1.2Log4j的起源Log4j最早起源于IBM的Zurich 研究实验室(),经过无数的工作,更改和性能加强后,成为广受欢迎的Jakarta项目组底下的Java开源日志工具。
其官方网站为:/log4j/docs/。
Log4J使用Apache Software License协议,通过它的官方网站可以下载到最新的log4J全部的源代码、类文件和文档资料。
另外,log4j 已经被转换很多种开发语言的日志工具,如表1—1所示。
表1—1工具名称与支持的开发语言名称语言种类Log4j JavaLog4Cxx c++Log4Net .NetLog4Perl PerlLog4PHP PHP名称语言种类Log4PLSQL PLSQL1.3Log4j的安装可以通过/site/binindex.cgi网址下载它的安装程序,如图1—1所示,下载的是一个zip压缩文件,解压到硬盘的任意目录下。
深入浅出Log4j编辑:曹靖鹏一. Log4j的作用?在开发阶段,Log4j用于发现程序的问题,排错。
在产品阶段,Log4j用于记录程序运行的状况。
与System.out.println的比较:经比较Log4j优于system.out.pringln。
二. Log4j的安装与下载1. 官方下载地址:/log4j/1.2/download.html2. 解压文件:核心包----log4j-1.2.15.jar 需导入工程配置文件--examples/sort1.properties(更名后-> log4j.properties)需导入工程三.例子1. 新建java工程,导入核心包log4j-1.2.15.jar2. 在src下,手写配置文件log4j.properties 用于对log4j日志的输出设置属性。
配置内容(每个配置都须对Logger, appender, layout设置值):log4j.rootLogger=debug, appender1log4j.appender.appender1=org.apache.log4j.ConsoleAppenderyout=org.apache.log4j.TTCCLayout图:3. 建HelloLog4j的类package com.v512.log4j;import org.apache.log4j.Logger;public class HelloLog4j {//传当前类HelloLog4j的对象,给Log4j的logger对象,用于对该类进行日志的记录。
private static Logger logger = Logger.getLogger(HelloLog4j.class);public static void main(String[] args) {// 记录信息.logger.debug("This is debug message.");("This is info message.");logger.error("This is error message.");}}建好运行,输出结果:[main] DEBUG com.v512.log4j.HelloLog4j - This is debug message.[main] INFO com.v512.log4j.HelloLog4j - This is info message.[main] ERROR com.v512.log4j.HelloLog4j - This is error message.四.例子讲解Log4j核心包含 Logger, Appender, Layout, 配置文件.Logger :分级别地完成日志信息的处理Appender :设置日志信息的去向Layout :设置日志信息的输出样式配置文件: log4j.properties或者 log4j.xml1.Logger输出信息的优先级别: All < TRACE < DEBUG < INFO < WARN < ERROR <FATAL < OFF在配置文件中设置的级别只有低于或等于类中记录信息的级别才能在输出结果中打印相应的信息。
Javalog4j教程Java log4j教程一:Log4j入门简介学习Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
此外,通过Log4j其他语言接口,您可以在C、C++、.Net、PL/SQL程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块。
而且,通过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中。
二、入门实例1.新建一个JAva工程,导入包log4j-1.2.17.jar,整个工程最终目录如下2、src同级创建并设置log4j.properties### 设置###log4j.rootLogger = debug,stdout,D,E### 输出信息到控制抬 ###log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.outyout = org.apache.log4j.PatternLayoutyout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n ### 输出DEBUG 级别以上的日志到=E://logs/error.log ###log4j.appender.D = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File = E://logs/log.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = DEBUGyout = org.apache.log4j.PatternLayoutyout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n### 输出ERROR 级别以上的日志到=E://logs/error.log ###log4j.appender.E = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.E.File =E://logs/error.loglog4j.appender.E.Append = truelog4j.appender.E.Threshold = ERRORyout = org.apache.log4j.PatternLayoutyout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n3、设置日志内容package com.mucfc;import org.apache.log4j.Logger;/** *@author linbingwen *@2015年5月18日9:14:21 */public class Test { private static Logger logger = Logger.getLogger(T est.class); /** * @param args */ public static void main(String[] args) { // System.out.println("This is println message."); // 记录debug级别的信息 logger.debug("This is debug message."); // 记录info级别的信息 ("This is info message."); // 记录error级别的信息 logger.error("This is error message."); } }4、输出结果(1)首先是控制台的信息(2)再来看输出的文件内容如下,发现已按照要求输出到对应的文档中去了。