Log4j

01.Log4j简介

Log4jApache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。我们可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

GUI组件GUI的意思 就是图形用户界面 ,是java 界面布局方面的知识,主要用到了 Java的swing包和awt包

 

 

UNIX Syslog:UNIX系统的Syslog机制

 

02.Log4j组成部分

Log4j由三部分组成:日志记录器(Loggers)输出端(Appenders)日志格式化器(Layout

 

日志记录器Logger控制启用或者禁用哪些日志记录语句,并且对日志进行级别限制

输出端(Appenders):指定将日志打印在控制台还是在文件中

日志格式化器:控制日志信息的打印格式

 

03.Logger

3.1 获取一个Logger对象

     

     Logger logger=Logger.getLogger(xxx.class);

 

     Logger被指定为实体,由一个String类的名字识别。Logger的名字是大小写敏感的,且名字之间具有继承关系,子名用父名作为前缀,用点“.”分隔,例如x.y是x.y.z的父亲

     

     root Logger(根Logger)是所有Logger的祖先,它有如下属性:
1.它总是存在的。
2.它不可以通过名字获得。
    root Logger可以通过以下语句获得:

 

            public static Logger Logger.getRootLogger();

 

            public static Logger Logger.getLogger(Class clazz)

       

04.日志级别

日志级别用来控制日志的输出,级别从高到低分为:

Off

最高等级,用于关闭所有日志记录

Fatal

指出每个严重的错误事件将会导致应用程序的退出

Error

  指出虽然发生的错误事件,但仍然不影响系统的继续运行

Warm

  表明会出现潜在的错误情形

Info

  一般用于在粗粒度级别上,强调应用程序的运行过程

Debug

  一般用于在精粒度级别上,对调试应用程序非常有帮助

All

  最低等级,用于打开所有日志记录

 

这些级别是定义在org.apache.log4j.Level类中。Log4j只建议使用4个级别,优先级从高到低分别是error,warn,info和debug。通过使用日志级别,可以控制应用程序中相应级别日志信息的输出

测试:

创建一个Java工程,在工程下创建一个lib包,将Log4j所需要的Jar包复制到lib包中,然后右键jar包Build Path-->Add to Build Path

创建测试类进行测试级别

 

  

05.输出端Appender

Appender用来指定日志信息输出的位置,如控制台,文件等,可以同时指定多个输出目的地,Log4j允许将信息输出到许多不同的输出设备中,一个log信息输出目的地就叫做一个Appender

 

每个Logger都可以拥有一个或多个Appender,每个Appender表示一个日志的输出目的地。可以使用Logger.addAppender(Appender app)为Logger增加一个Appender,也可以使用Logger.removeAppender(Appender app)为Logger删除一个Appender。

Log4j常用输出位置:

org.apache.log4j.ConsoleAppender

将日志信息输出到控制台

org.apache.log4j.FileAppender

将日志信息输出到一个文件

org.apache.log4j.DailyRollingFileAppender

将日志信息输出到一个日志文件,并且每天输出到一个新的日志文件

org.apache.log4j.RollingFileAppender

将日志信息输出到一个日志文件,并且指定文件的尺寸,当文件大小达到指定尺寸时,会自动把文件改名,同时产生一个新的文件

org.apache.log4j.WriteAppender

将日志信息以流格式发送到任意指定地方

org.apache.log4j.jdbc.JDBCAppender

通过JDBC把日志信息输出到数据库中

 

 

 

 

 

06.日志格式化器Layout

 

日志格式化器分为三种

 

HTMLLayout

格式化日志输出为HTML表格形式


SimpleLayout

以一种非常简单的方式格式化日志输出,它打印三项内容:级别-信息

PatternLayout

根据指定的转换模式格式化日志输出,或者如果没有指定任何转换模式,就使用默认的转化模式格式

 

       案例:

使用FileAppender指定日志输出文件

     使用SimpleLayout指定日志格式

 

效果图:

 

 

08.Log4net各种Appender配置:

 

http://www.cnblogs.com/anderslly/archive/2007/03/09/log4netconfigsamples.html

 

 

 

07.Log4j的配置

配置Log4j环境就是指配置root Logger,包括把Logger为哪个级别,为它增加哪些Appender,以及为这些Appender设置Layout,等等。因为所有其他的Logger都是root Logger的后代,所以它们都继承了root Logger的性质。这些可以通过设置系统属性的方法来隐式地完成,也可以在程序中调用XXXConfigurator.configure()方法来显式地完成。有以下几种方式来配置Log4j

 

A:配置放在文件里,通过环境变量传递文件名等信息,利用Log4j默认的初始化过程解析并配置
B:配置放在文件里,通过应用服务器配置传递文件甸等信息,利用一个特定的Servlet来完成配置
C:在程序中调用BasicConfigor.configure()方法。
D:配置放在文件里,通过命令行PropertyConfigurator.configure(args[])解析log4j.properties文件并配置Log4j

 

 

7.1 BasicConfigurator.configure()方法

 

它使用简单的方法配置Log4j环境。这个方法完成的任务是:


1:用默认的方式创建PatternLayout对象p:
  PatternLayout p = new PatternLayout("%-4r[%t]%-5p%c%x-%m%n");


2:用p创建ConsoleAppender对象a,目标是System.out,标准输出设备:
 ConsoleAppender a = new CpnsoleAppender(p,ConsoleAppender.SYSTEM_OUT);


3:为root Logger增加一个ConsoleAppender p;
 rootLogger.addAppender(p);


4:把rootLogger的log level设置为DUBUG级别;
 rootLogger.setLevel(Level.DEBUG);

 

     7.2 PropertyConfigurator.configure()方法

 

使用如下语句生成logger对象时:

static Logger logger=Logger.getLogger(xxx.class);

 

 

如果没有调用BasicConfigurator.configure()

 PropertyConfigurator.configure()

 DOMConfigurator.configure()

方法时,Log4j会自动加载CLASSPATH下名为log4j.properties的配置文件。如果把此配置文件改为其他名字,例如my.properties,程序虽然仍能运行,但会报出不能正确初始化Log4j系统的提示。这时可以在程序中加上

 

PropertyConfigurator.configure("classes/my.properties");

 

08.Log4j.propperties配置文件

https://www.cnblogs.com/tanshaoxiaoji/p/log4j_config.html

 

 

09.Tomcat中如何使用log4j打印log


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值