`
laies
  • 浏览: 243240 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

log4j的应用及配置

    博客分类:
  • Java
阅读更多

学习了一些log的知识,特此将一些资料发布共参考。

      Apache的开源项目Log4j是一个功能强大的日志组件,提供快速有效的日志记录,开发者通过简单的学习,即可为自己的程序中加入非常实用的日志功能。
      在apache网站:http://jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包,解压,将其中打包好的的log4j-1.x.x.jar文件复制到classpath相关目录下 。

一、快速体验
ok,现在就可以来体验一下Log4j的功能,按以下步骤在程序中快速加入了日志功能。
参看下面这个简单的例子一:
第一步: 用import导入Log4j需要使用的相关的类
第二步: 定义获取一个日志记录器Logger的对象
第三步: 装入Log4j的配置文件,或者使用缺省环境的配置
第四步:现在可以在你的程序中想输出日志的地方,使用Logger类提供的以下方法,插入不同优先级的日志了。
 debug(Object message ) ;
 info(Object message ) ;
 warn(Object message ) ;
 error(Object message ) ;

大功告成!是不是非常简单呢?完全可以取代以前常用来调试程序的System.out.println("xxxxxxxxxxxx")这样的语句,而且log4j可以通过自定义配置文件来灵活地对日志输出的级别进行控制。
#########################################
例子一:
package com.study;

/**导入Log4j需要使用的相关的类*/
import org.apache.log4j.Logger;
import org.apache.log4j.BasicConfigurator;

/**
 * <p>Title: Log4j例子</p>
 * <p>Description: 快速在程序中使用Log4j</p>
 * <p>Copyright: Copyright (c) 2004</p>
 * @author Robin
 * @version 1.0
 */
public class HelloLog4j {

  //定义日志记录器logger,所有的日志由它来负责记录,
  static Logger logger=Logger.getLogger(HelloLog4j.class.getClass());

  public static void main(String[] args) {
    //使用缺省环境来配置Log4j
    BasicConfigurator.configure();
 //使用配置文件来配置Log4j
 //PropertyConfigurator.configure ( "D:\\testLog4j.properties" ) ;

    //插入日志信息
    logger.info("HelloLog4j开始执行");
    try {
      HelloLog4j helloLog4j1 = new HelloLog4j();
      int count=helloLog4j1.count(1,-32);
      logger.debug("count的值为:"+count);
    }
    catch (Exception e) {
      logger.error("error"+e.getMessage());
    }
    logger.info("HelloLog4j执行完成");   
  }
  /**
   * 求两整数数之和
   * */
  public int count(int a,int b) {
    int add=a+b;
    if (add<0){
      logger.warn("两数之和小于零");
    }
    return add;
  }
}
#########################################
二、配置Log4j
我们可以通过自定义定义配置文件来对日志的输出进行动态的控制。
Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件(键=值)。
可以用以下方式来载入配置文件:
 1、载入使用Java 键—值对的属性文件编写的配置文件。
 PropertyConfigurator.configure ( String configFilename)
 2、载入XML形式的配置文件
 DOMConfigurator.configure ( String filename )。

看一个简单的java属性配置文件testLog4j.properties:
#########################################
#指定根Logger,及日志输出级别,大于等于该级别的日志将被输出( DEBUG < INFO < WARN < ERROR < FATAL ) 设为OFF可以关闭日志
log4j.rootLogger=DEBUG, A1,A2
#指定log输出目的,这里设为输出日志到指定目录的文件my.log中
log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.File=d:\\study\\my.log
#指定日志信息的格式
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%r %d{yyyy-MM-dd HH:mm:ss} %c %p -%m%n

#把A2输出到控制台
log4j.appender.A2=org.apache.log4j.ConsoleAppender
log4j.appender.A2.layout=org.apache.log4j.SimpleLayout

#还可以单独指定输出某个包的日志级别
#log4j.logger.com.study.HelloLog4j=INFO
#########################################

1、配置根Logger,其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName2
level:日志的级别,指定这条日志信息的重要性。分为ALL < DEBUG < INFO < WARN <ERROR < FATAL < OFF
一般常用的为 DEBUG , INFO ,WARN ,ERROR四种,分别对应Logger类的四种方法
 debug(Object message ) ;
 info(Object message ) ;
 warn(Object message ) ;
 error(Object message ) ;
如果设置级别为INFO,则优先级大于等于INFO级别(如:INFO、WARN、ERROR)的日志信息将可以被输出,小于该级别的如:DEBUG将不会被输出
appenderName :就是指定日志信息输出目的地,比如(打印到控制台,输出到文件等)。同一条日志信息可以配置多个输出目的地。

2、配置log输出目的地
 Log4j提供以下几种:
 org.apache.log4j.ConsoleAppender(控制台)
 org.apache.log4j.FileAppender(文件)
 org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
 org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
 org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
3、log信息的格式
 org.apache.log4j.HTMLLayout(HTML表格形式)
 org.apache.log4j.SimpleLayout(简单格式的日志,只包括日志信息的级别和指定的信息字符串 ,如:DEBUG - Hello)
 org.apache.log4j.TTCCLayout(日志的格式包括日志产生的时间、线程、类别等等信息)
 org.apache.log4j.PatternLayout(灵活地自定义日志格式)

当使用org.apache.log4j.PatternLayout来自定义信息格式时,可以使用
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p -%m%n 来格式化信息
%c    输出所属类的全名,可写为 %c{Num} ,Num类名输出的范围  如:"com.sun.aaa.classB", %C{2}将使日志输出输出范围为:aaa.classB
%d    输出日志时间其格式为 可指定格式 如 %d{HH:mm:ss}等
%l    输出日志事件发生位置,包括类目名、发生线程,在代码中的行数
%n    换行符
%m    输出代码指定信息,如info(“message”),输出message
%p    输出日志的优先级,即 FATAL ,ERROR 等
%r    输出从启动到显示该条日志信息所耗费的时间(毫秒数)
%t    输出产生该日志事件的线程名
更详细参数信息可参看类org.apache.log4j.PatternLayout的API doc文档

关于性能:
加入日志总是会带来一些性能损耗,当然绝大多数情况下可以忽略不计。
1、当某个级别的日志被屏蔽输出时,比如,配置级别为INFO,那么程序中DEBUG级别的日志语句将被禁止输出
如:
 logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));
以上语句中,虽然debug语句里的消息不会输出到日志里,但消息中字符串构造的操作依然会执行,当操作比较复杂时,有时会带来一些性能损耗,可以改成一下写法:
 if(logger.isDebugEnabled() {
        logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));
    }
则一旦DEBUG级别被禁止输出,则不会执行日志信息后面的字符串操作。
2、由于日志记录器Logger,支持命名的层次,所以在子层次向上查找继承自父层次的日志级别时,也可能会有一些性能损耗。

总之,Log4j的设计目标已经充份考虑到了速度优先。经过多次的改写,性能问题已经几乎基本完全不是问题,它是一个非常优秀的工具组件,使用它带来的好处,大大多于失去的那一点点性能损耗。完全可以大胆使用。


============================================
分享到:
评论

相关推荐

    log4j.properties配置文件

    正确配置`log4j.properties`对于应用程序的日志管理和调试至关重要。 #### 二、日志级别 Log4j支持以下几种级别的日志输出:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。这些级别按照从高到低的顺序排列,其中OFF...

    SpringBoot框架配置log4j和log4j2的配置代码

    Log4j和Log4j2是两种广泛使用的Java日志框架,它们提供了灵活的日志配置和高性能的日志处理能力。本文将详细介绍如何在SpringBoot项目中配置Log4j和Log4j2。 ### SpringBoot与Log4j Log4j是Apache的一个开源项目,...

    log4j实用配置扩展

    log4j的主要优势在于其灵活性和可扩展性,允许用户通过配置文件自定义日志记录的方式,无需修改应用程序代码。 #### 二、日志记录的目的 在应用程序中记录日志主要有以下三个目的: 1. **监视代码中变量的变化...

    tomcat下的log4j日志配置

    2. **配置全局 Log4j 属性文件**:在任意位置创建 `log4j.properties` 文件,并设置全局的日志级别、输出格式及存储路径等。通常会将该文件放置在 Tomcat 的 `conf` 目录下。 ```properties log4j.rootLogger=...

    log4j.properties配置详解

    ### Log4j.properties配置详解 #### 一、Log4j配置文件基本概念 Log4j是一种广泛应用于Java应用程序的日志框架,它可以帮助开发者轻松管理应用程序的日志记录过程。Log4j支持多种配置方式,其中.properties文件...

    log4j配置和加载方法

    本文将深入解析log4j的配置与加载机制,帮助开发者更好地理解和应用log4j。 #### Log4j配置文件格式 Log4j支持多种配置文件格式,包括`.properties`和`.xml`。两种格式在功能上并无本质区别,选择哪种取决于个人或...

    log4j集成syslog配置说明

    ### log4j集成syslog配置详解 在现代的IT运维管理中,日志记录与分析是确保系统稳定运行的关键环节之一。log4j作为Java应用中广泛使用的日志框架,其强大的日志处理能力得到了业界的认可。而syslog作为一种标准化的...

    log4j.jar包,和log4j.properties配置文件下载

    Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中插入日志语句,以便跟踪程序的运行情况、调试错误、监控性能等。这个框架由Apache软件基金会开发,是许多Java项目的首选日志解决方案,因为它具有...

    log4j日志配置以及配置文件详解

    Log4j作为Java领域广泛应用的日志框架,提供了强大的日志记录功能和灵活的配置。本文将深入探讨log4j的配置以及配置文件的详解。** 首先,我们要理解什么是`log4j.properties`文件。这是log4j框架的配置文件,使用...

    Log4J_全能配置文件.pdf

    综上所述,Log4J提供了一个强大而灵活的日志管理工具,通过合理的配置能够满足几乎所有应用场景下的需求。开发者可以根据实际情况选择合适的appender类型和配置参数,以达到最佳的日志管理效果。

    log4j使用jar包和log4j.properties配置文件

    Log4j作为Java日志处理的重要工具,通过其灵活的配置和强大的功能,可以帮助开发者更好地理解和管理应用的运行状态。1.2.17版本的Log4j jar包和`log4j.properties`配置文件是实现这一目标的基础。正确地引入和配置这...

    log4j-1.2.11jar和log4j.properties配置文件

    **四、使用Log4j进行日志记录** 在Java代码中,我们可以使用以下方式调用Log4j: ```java import org.apache.log4j.Logger; public class MyClass { private static final Logger logger = Logger.getLogger...

    log4j及配置文件

    通过理解和掌握Log4j的配置,开发者可以更好地利用日志来监控和调试程序,从而提升开发效率和应用质量。无论是对于初学者还是经验丰富的开发者,深入理解并熟练运用Log4j都是提高开发效能的重要步骤。

    log4j.properties配置实例

    在 Java 应用程序中, Log4j 是一个非常流行的日志记录工具,它能够帮助开发者快速地记录和跟踪应用程序中的日志信息。log4j.properties 文件是 Log4j 的核心配置文件,它控制着 Log4j 的行为和日志记录的方式。 在...

    log4j-1.2.17的jar包以及依赖包,还有一份log4j的配置文件,输出到控制台和文件夹两种配置

    总结来说,Log4j-1.2.17提供了灵活的日志管理功能,通过配置文件可以定制化日志输出的方式和内容,对于开发、调试和维护Java应用具有极大的帮助。尽管有更新的版本如Log4j2可用,但Log4j 1.x仍然在许多项目中得到...

    log4j使用配置方法及项目中的应用

    ### log4j使用配置方法及项目中的应用 #### 概述与背景 在软件开发过程中,日志记录是一项至关重要的任务,它不仅帮助开发者监控代码执行状态,还为后续的故障排查、性能优化和安全审计提供了关键信息。传统的做法...

    log4j的详细配置

    4. 在应用服务器中配置Log4J,例如在Tomcat中通过`WEB-INF/classes/log4j.properties`或`WEB-INF/classes/log4j.xml`文件。 通过以上配置,你可以根据需求定制日志系统,满足不同级别的信息记录、不同的输出目的地...

    [简单]log4jdbc-log4j2配置简记

    标题中的“log4jdbc-log4j2配置简记”指的是在Java开发中使用log4jdbc-log4j2库来监控和记录SQL查询的过程。log4jdbc是一个开源项目,它允许开发者通过日志系统来追踪数据库操作,而log4j2是log4j的升级版,提供了更...

Global site tag (gtag.js) - Google Analytics