`
enki_ding
  • 浏览: 211210 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

[转]java log4j使用

阅读更多

log4j使用方法

1、定义配置文件

首先使用配置文件将使我们的应用程序更加灵活配置log日志输出方式包括输出优先级、输出目的地、输出格式。Log4j支持两种配置文件格式,一种是 XML格式的文件,一种是Java特性文件log4j.properties(键=值)。下面将介绍使用log4j.properties文件作为配置文 件的方法:

①配置根Logger,其语法为:0

log4j.rootLogger = [ level ] , appenderName, appenderName, …

其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。Log4j建议只使用四个级别,优 先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。 appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。

②配置日志信息输出目的地Appender,其语法为:

log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1

log4j.appender.appenderName.option = valueN

其中,Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

③配置日志信息的格式(布局),其语法为:

log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1

log4j.appender.appenderName.layout.option = valueN

其中,Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下: %m 输出代码中指定的消息

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%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 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)

2、在代码中使用Log4j

①得到记录器

使用Log4j,第一步就是获取日志记录器,这个记录器将负责控制日志信息。其语法为:

public static Logger getLogger( String name)

通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器。Name一般取本类的名字,比如:

static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () )

②读取配置文件

当获得了日志记录器之后,第二步将配置Log4j环境,其语法为:

BasicConfigurator.configure (): 自动快速地使用缺省Log4j环境。
PropertyConfigurator.configure ( String configFilename) :读取使用Java的特性文件编写的配置文件。

例:PropertyConfigurator.configure(".\\src\\log4j.properties")
DOMConfigurator.configure ( String filename ) :读取XML形式的配置文件。

③插入记录信息(格式化日志信息)

当上两个必要步骤执行完毕,就可轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下:

Logger.debug ( Object message ) ;
Logger.info ( Object message ) ;
Logger.warn ( Object message ) ;
Logger.error ( Object message ) ;

log4j范例程序

下面将使用一个最简单的范例程序来进一步说明log4j的使用方法。程序代码如下:



import org.apache.log4j.*;



public class LogTest {





static Logger logger = Logger.getLogger(LogTest.class.getName());



public static void main(String[] args) {



PropertyConfigurator.configure ( “.\\src\log4j.properties”);

logger.debug("Debug ...");



logger.info("Info ...");



logger.warn("Warn ...");



logger.error("Error ...");



}

}

程序说明:

① static Logger logger = Logger.getLogger(LogTest.class.getName());就是创建一个属于LogTest类的Logger对象,创建时要 告知Logger你当前的Class是什么。

② PropertyConfigurator.configure ( “log4j.properties”)就是说使用当前工程目录下的src文件夹中的log4j.properties文件作为配置文件。若将 log4j.properties放在工程根目录下也可不写此句,程序会自动找到配置文件。

③ logger.debug就是输出debug的信息,logger.info就是输出提示信息,logger.warn就是显示警告信 息,logger.error就是显示错误信息。



下面是配置文件log4j.properties的内容:

log4j.rootCategory=DEBUG, stdout,R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender

log4j.appender.R.File=log.txt

log4j.appender.R.MaxFileSize=100KB

log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss} %-5p %c - %m%n

程序说明:

① log4j.rootCategory=DEBUG, stdout,R

就是说我要显示所有优先权等於和高于Debug的信息。
"stdout",”R”表示我定义了两个输出端(随便什么名字都好)。

②下面的三行说stdout输出端其实是标准输出Console,也就是屏幕。输出的格式是PatternLayout。转换方式是%5p (%F:%L) - %m%n,即前五格用来显示优先权,再显示当前的文件名,加当前的行数。最后是logger.debug()或logger.info()或 logger.warn()或logger.error()里的信息。%n表示回车空行。

③再加上下面六行则log信息不光显示在屏幕上,而且将被保存在一个叫"log.txt"的文件里,文件最大为100KB。如果文件大小超过100KB, 文件会被备份成"log.txt.1",新的"log.txt"继续记录log信息。

接下来我们可以改变log4j.properties,而不需重新编译就可以控制log信息是否显示、log信息的输出端类型、输出方式、输出格式,等 等。举例如下:

①在log4j.properties文件里把"log4j.rootCategory=DEBUG,stdout,R"改写 成"log4j.rootCategory=OFF, stdout,R",这样所有的log信息都不会显示了;解决了本文开始提出的问题。
②在log4j.properties文件里把"log4j.rootCategory=DEBUG,stdout,R"改写 成"log4j.rootCategory=INFO, stdout,R",这样只显示INFO, WARN, ERROR的log信息,而DEBUG信息不会被显示;



在web程序中使用log4j注意问题

1、    由于jsp或servlet在执行状态时没有当前路径概念,所有使用PropertyConfigurator.configure(String)语句 找log4j.properties文件时要给出相对于当前jsp或servlet的路径转化成为一个绝对的文件系统路径。方法是使用 servletcontext.getrealpath(string)语句。例:

//得到当前jsp路径

String prefix = getServletContext().getRealPath("/");

//读取log4j.properties

PropertyConfigurator.configure(prefix+"\\WEB-INF\\log4j.properties");

2、相应的log4j.properties设置某个属性时也要在程序中设置绝对路径。例:

log4j.appender.R.File属性设置日志文件存放位置。我们可以用读写.properties配置文件的方法进行灵活设置。

 

 

 

来自:http://my.oschina.net/asdtiang/blog/2809

分享到:
评论

相关推荐

    log4j使用与java中log4j记录日志如何写入数据库

    本文将详细介绍如何在Java中使用Log4j来记录日志,并将其写入数据库。 首先,我们需要了解Log4j的基本结构。一个简单的Log4j项目通常包含以下几个部分: 1. **配置文件**:Log4j的配置文件通常是`log4j.properties...

    Java Log4j使用详解

    ### Java Log4j 使用详解 #### 一、Java 日志管理概述 在Java应用程序中,良好的日志管理对于系统的维护和故障排查至关重要。本篇文章旨在详细介绍如何在Java中使用Log4j来管理日志,包括其配置方法以及与其他日志...

    kafka_Java_Log4j

    Log4j是一个广泛使用的日志记录框架,而Apache Kafka则是一个分布式流处理平台,常用于实时数据传输。当我们需要将Log4j的日志实时地发送到Kafka时,可以借助Kafka提供的Log4jAppender实现这一功能。现在,我们详细...

    java log4j配置大全

    ### Java Log4j 配置详解 #### 一、Log4j 概述 Log4j 是 Apache 的一个开源项目,被广泛应用于 Java 应用程序的日志记录中。通过 Log4j,开发者可以轻松控制日志信息的输出目的地、格式以及级别。这使得日志的管理...

    详细讲解Java中log4j的使用方法

    ### Java中log4j的使用方法详解 #### 一、log4j简介 Log4j是Apache的一个开源项目,用于实现日志记录功能。它提供了一种高度灵活的日志记录框架,可以方便地控制日志的输出级别、格式以及目标(如控制台、文件等)...

    Java与log4j2整合mongoDB需要的jar包

    在Java开发过程中,为了实现日志管理,我们通常会使用如log4j2这样的日志框架。Log4j2是一个强大的、灵活的日志系统,它提供了丰富的配置选项和高性能的日志记录能力。当我们的应用程序需要将日志信息存储在数据库中...

    Java Log4j所需Jar包

    Java Log4j 1,2 所需Jar包,一个完整的软件,日志是必不可少的。程序从开发、测试、维护、运行等环节,都需 要向控制台或文件等位置输出大量信息。这些信息的输出,在很多时候是使用 System.out.println()无法完成的。 ...

    java Log4j 事例和讲解

    Log4j是Java编程语言中广泛使用的日志记录框架,由Apache软件基金会开发。它提供了一种灵活且高效的方式来管理和记录应用程序的运行时信息,包括错误、警告、调试信息等。在本文中,我们将深入探讨Log4j的基本功能,...

    如何在Java工程中使用Log4j

    Java工程中使用Log4j详解 Log4j是Apache提供的一个流行的日志记录工具,广泛应用于Java工程中。它可以帮助开发者记录程序的执行过程,方便BUG的追踪和程序的优化。在Java工程中使用Log4j可以提高程序的可读性和可...

    Java log4j commons文件

    "Java log4j commons文件"主要涉及两个关键组件:log4j和Apache Commons Logging。 首先,log4j是Apache软件基金会的一个项目,它提供了一个灵活的日志框架,用于在Java应用程序中生成日志。log4j的核心概念包括...

    java程序log4j配置

    Java程序log4j配置详解 log4j是一个流行的Java日志记录工具,提供了灵活的日志记录和管理功能。在Java程序中,log4j配置正确是非常重要的,本文将详细介绍log4j配置的各个方面。 一、log4j配置文件 log4j的配置...

    log4j使用教程(详解)

    **日志框架Log4j详解** 在Java编程中,日志记录是不可...理解和熟练使用Log4j,对于提升Java应用的调试和维护效率有着重要作用。在实际项目中,根据需求选择合适的配置和使用方式,可以使日志记录更加高效和有针对性。

    java log4j 示例

    Java Log4j 是一个广泛使用的日志记录框架,它为Java应用程序提供了灵活且高效的日志管理。Log4j 提供了丰富的功能,包括配置日志级别、输出格式、日志目的地等,使得开发者可以方便地进行调试、监控和故障排查。在...

    java log4j统一打印在user.dir目录下(windows、linux通用、不用考虑不同操作系统分隔符不一致的情况)

    Java日志管理是开发过程中必不可少的部分,而Log4j作为Java世界中广泛使用的日志框架,因其灵活性和可配置性而备受青睐。本教程将详细解释如何配置Log4j,使其在不同操作系统环境下(Windows和Linux)都能统一将日志...

    Java中Log4j 2日志框架的压缩包,版本是-2.23.0

    下面我们将详细探讨Log4j 2的核心特点、主要组件以及如何在Java项目中使用它。 1. **核心特点** - **性能优化**:Log4j 2采用了异步日志处理,通过使用内部的AsyncAppender,显著提高了日志写入速度,减少了对应用...

    log4j.jar各个版本

    log4j-java1.1.jar, log4j-jcl-2.0.2-javadoc.jar, log4j-jcl-2.0.2-sources.jar, log4j-jcl-2.0.2.jar, log4j-jmx-gui-2.0.2-javadoc.jar, log4j-jmx-gui-2.0.2-sources.jar, log4j-jmx-gui-2.0.2.jar, log4j-nosql...

    若依框架使用的log4j2.16.0,修复log4j漏洞log4j2下载最新log4j2.16.0下载

    Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中轻松地记录各种级别的日志信息,如DEBUG、INFO、WARN、ERROR等。在2021年底,一个重大的安全漏洞(CVE-2021-44228)被发现在Log4j2的早期版本中,...

    JAVA-log4j参数

    Log4j是Apache组织提供的一款强大且灵活的日志框架,广泛应用于各种Java项目。本篇文章将深入探讨Log4j的参数配置方法,以及ConversionPattern参数的格式含义。 首先,Log4j的核心在于其配置文件,一般命名为`log4j...

Global site tag (gtag.js) - Google Analytics