我是靠谱客的博主 无心大神,最近开发中收集的这篇文章主要介绍Log4J介绍Log4J的使用方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在应用程序中输出日志有三个目的:

  1. 监视代码中变量的变化情况,把数据周期性地记录到文件中供其他应用进行统计分析的工作
  2. 跟踪代码运行时的轨迹,作为日后审计的依据
  3. 担当开发环境中调试器的作用,向文件或者控制台打印代码的调试信息

log4J主要由以下三个构件组成:

  1. Logger:负责生成日志,并能够对日志信息进行分类筛选,通俗地讲就是决定什么日志应该被输出,什么日志应该被忽略,主要是由日志的级别来控制
  2. Appender:定义了日志信息输出的目的地,指定日志信息应该被输出到 什么地方,如控制台、文件或者网络设备等
  3. Layout:指定日志信息的输出格式

一个Logger可以有多个Appender,也就是说一条日志信息可以同时输出到多个目的地;而每个Appender对应一种Layout,Layout指定了日志输出的格式。

Logger组件

Logger组件是Log4J的核心组件,它代表了Log4J的日志记录器,能够对日志信息进行分类筛选,决定什么日志应该被输出,什么日志应该被忽略。

Logger组件由org.apache.log4j.Logger类来实现,它提供了如下方法:

//创建及返回Logger实例的静态方法
public static Logger getRootLogger();
public static Logger getLogger(String name);

//打印各种类别的日志的方法
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(Priority p, Object message);

可以在Log4J的配置文件中配置自己的Logger组件,例如:

log4j.logger.helloappLogger=WARN

以上代码定义了一个Logger组件,名为helloappLogger,并设置它的日志级别为WARN。Log4J共有5种日志级别,从高到低分别是FATAL、ERROR、WARN、INFO、DEBUG。当调用输出日志的方法时,只有方法级别大于这个logger所设置的级别的日志信息才会以被记录。

Appender组件

Log4J的Appender组件用于决定将日志输出到什么地方。目前Log4J支持将日志输出到以下目的地:

  1. 控制台
  2. 文件
  3. GUI组件
  4. 远程套接字服务器
  5. NT的事件记录器
  6. 远程UNIX Syslog守护进程

一个Logger可以同时对应多个Appender。

Layout组件

Layout组件用于决定日志的输出格式,它有以下几种类型:

  1. org.apache.log4j.HTMLLayout(以HTML表格形式布局)
  2. org.apache.log4j.PatternLayout*可以自定义布局格式)
  3. org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
  4. org.apache.log4j.TTCCLayout(包含日志产生的时间、线程和类别等信息)

SimpleLayout仅输出日志信息级别和信息字符串,例如:

WARN - This is a log message from the helloappLogger.

PatternLayout可以让开发者依照ConversionPattern去定义输出格式。ConversionPattern有点像C语言的print打印函数,开发者可以通过一些预定义的符号来指定日志的内容和格式,这些符号的说明如下所示:

符号描述
%r自程序开始运行到输出当前日志所消耗的毫秒数
%t表示输出到当前日志的线程的名字
%p表示当前日志的级别
%d表示输出当前日志的日期
%c表示输出当前日志的Logger的名字
%m%n表示日志信息的内容

大致的符号就这些,再详细的信息可以参考官方文档。

Logger组件具有继承性,Log4J提供了一个root Logger,它是所有Logger组件的父类。用户可以在配置文件中方便地配置存在继承关系的Logger组件,凡是在符号”.”后面的Logger组件都会成为在符号”.”前面的Logger组件的子类,例如:

log4j.apache.logger.helloappLogger=WARN
log4j.apache.helloappLogger.childLogger=,file

对于以上配置文件,childLogger就是helloappLogger的子类的Logger组件。

Logger组件的继承关系有以下特点:

  • 如果子类没有设置日志的级别,那么将继承父类的日志级别
  • 如果子类设置了自己的日志级别,就不会继承父类的日志级别
  • 在默认情况下,子类会继承父类所有的Appdnder,并把它们加入到自己的Appender清单中
  • 如果把子类的additivity标志设置为false,那么它就不会继承父类的Appender。additivity标志的默认值是true

Log4J的使用方法

定义配置文件

Log4J有三个重要的组件:Logger、Appender和Layout。Log4J支持在程序中以编程的方式设置这些组件,也可以在配置文件中设置这些组件。Log4J支持两种配置文件的格式:XML格式的配置文件和Java属性文件。下面介绍如何用Java属性文件的方式来配置Log4J。

配置Logger组件

如果是配置rootLogger,则语法为:

log4j.rootLogger=[priority], appenderName1, appenderName2, ...

其中priority是日志的级别,appenderName指定Appender组件,用户可以同时指定多个Appender组件。

如果配置自己的Logger组件,则语法为:

log4j.logger.loggerName=[priority], appenderName1, appenderName2, ...

配置Appender组件

log4j.appender.appenderName=从log4j的几种Appender类选择一个
log4j.appender.appenderName.option1=value1
log4j.appender.appenderName.option2=value2
...

Log4J提供的Appender组件有以下几种:

  • org.apache.log4j.ConsoleAppender(控制台)
  • org.apache.log4j.FileAppender(文件)
  • org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
  • org.apache.log4j.RollingFileAppender(文件大小达到一定尺寸的时候产生一个新的文件)
  • org.apache.log4j.WriteAppender(将日志信息作为数据流改善到任意指定的地方)

配置Layout组件

log4j.appender.appenderName.layout=从log4j的几种Layout中选择一种
log4j.appender.appenderName.layout.option1=value1
log4j.appender.appenderName.layout.option2=value2
...

Log4J提供的Layout有以下几种:

  • org.apache.log4j.HTMLLayout(以HTML表格形式布局)
  • org.apache.log4j.PatternLayout(自定义布局方式)
  • org.apache.log4j.SImpleLayout(包含日志信息的级别和信息字符串)
  • org.apache.log4j.TTCCLayout(包含日志产生的时间、线程和类别等信息)

在程序中使用Log4J

在程序中使用Log4J需要以下几个 步骤:

  1. 读取配置文件,配置Log4J的环境
  2. 获得日志记录器
  3. 输出日志信息

首先读取配置文件,配置Log4J环境,有以下三种方法:

  • BasicConfigurator.configure():自动快速地使用默认Log4J环境
  • PropertyConfigure(String configFilename):读取Java属性格式的配置文件并配置Log4J环境
  • DOMConfigutor.configure(String filename):读取XML形式的配置文件并配置Log4J环境

然后获得日志记录器,这个logger负责日志的输出。如果要获得root logger,可以调用Logger类的静态方法getRootLogger():

Logger rootLogger = Logger.getRootLogger();

如果需要获得用户自己的Logger,可以使用Logger类的静态方法getLogget(String name):

Logger helloappLogger = Logger.getLogger("log4j.logger.helloappLogger");

然后就可以在程序中调用Logger类的输出方法了。

最后

以上就是无心大神为你收集整理的Log4J介绍Log4J的使用方法的全部内容,希望文章能够帮你解决Log4J介绍Log4J的使用方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部