`

log4j中isDebugEnabled()

    博客分类:
  • lo4j
 
阅读更多

最近在项目中,常有意无意的看到这样的代码

	if(log.isDebugEnabled()){
			log.debug("msg");
		}

 虽然从方法的命名规则大概知道是什么意思,但不知为什么要这样写?

通过百度搜索,大概理解这样写为提高代码的效率,这样写为什么能提高效率呢?

原因在于log日志具有以下5种正常级别

org.apache.log4j.Level类提供以下级别,但也可以通过Level类的子类自定义级别。
Level	 描述
ALL	 各级包括自定义级别
DEBUG	 指定细粒度信息事件是最有用的应用程序调试
ERROR	 错误事件可能仍然允许应用程序继续运行
FATAL	 指定非常严重的错误事件,这可能导致应用程序中止
INFO	 指定能够突出在粗粒度级别的应用程序运行情况的信息的消息
OFF	 这是最高等级,为了关闭日志记录
TRACE	 指定细粒度比DEBUG更低的信息事件
WARN	 指定具有潜在危害的情况

 优先级关系:
分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL或者您定义的级别。 

Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG

当在log4j.properties种设置:log4j.rootLogger=info,stdout

 

if(log.isDebugEnabled()){//此条件为假,if的语句体不执行,可以有选择的执行打印日志,从而提高了代码执行效率
			log.debug("msg");
		}

示例:

public class TestLog {
	
	public static final Logger log = LoggerFactory.getLogger(TestLog.class);
	
	public static void main(String[] args) {
		//int count = 0;
		log.info("-------begin----");
		if(log.isDebugEnabled()){
			log.debug("debug");
		}
		log.info("-------end------");
		
	}
}

 当设置:log4j.rootLogger=debug,stdout时输出结果:

2017-07-31 22:12:49,856-5p TestLog  - -------begin----
2017-07-31 22:12:49,871-5p TestLog  - debug
2017-07-31 22:12:49,871-5p TestLog  - -------end------

 当设置:log4j.rootLogger= info,stdout时输出结果:

2017-07-31 22:28:08,555-5p TestLog  - -------begin----
2017-07-31 22:28:08,558-5p TestLog  - -------end------

 使用{}写法也可以到达效果:

public static void main(String[] args) {
		//int count = 0;
		log.info("-------begin----");
		//if(log.isDebugEnabled()){
		//	log.debug("debug");
		//}
		log.debug("debug{}");
		log.info("-------end------");
		
	}

 

输出结果一样,大家可以动手尝试下,书写代码百遍,其义自现。

 

分享到:
评论

相关推荐

    如何使用Log4j如何使用Log4j

    #### 四、使用Log4j记录日志 1. **引入Log对象**: ```java protected final Log log = LogFactory.getLog(getClass()); ``` 在Java类中,需要引入Log对象以便记录日志信息。 2. **记录日志信息**: ```...

    log4j配置详解 新手入门教程

    #### 四、Log4j的使用 在代码中使用Log4j非常简单,只需要通过`LogFactory.getLog()`方法获取对应的Logger实例即可。例如: ```java protected final Log log = LogFactory.getLog(getClass()); if (log....

    log4j详解配置说明

    在项目中添加 Commons Logging 的依赖,并设置 Log4j 为 Commons Logging 的实现。 **2. 编写代码** 使用 Commons Logging 的 `Log` 接口来记录日志。 ```java import org.apache.commons.logging.Log; ...

    log4j配置与使用方法

    - 为了减少性能开销,可以在代码中使用`if (log.isDebugEnabled()) { log.debug(); }`的方式来判断是否输出debug级别的日志。 3. **环境适应性**: - 对于不同的环境(如开发环境、测试环境、生产环境)可以采用...

    log4j 源代码 log4j

    3. Logger工作原理:在`org.apache.log4j.Logger`类中,每个logger都有一个优先级,通过`isDebugEnabled()`、`isInfoEnabled()`等方法检查当前日志级别是否允许输出特定级别的日志。 4. 配置解析:`org.apache.log4...

    log4j入门、详解.pdf

    #### 四、Log4j使用方法 ##### 4.1 properties配置文件详解 `log4j.properties`文件是Log4j中最常见的配置文件类型。配置项包括但不限于: - **rootLogger**:设置全局日志级别及默认的输出目的地。 - **Appender...

    配置Log4J的一般步骤

    ### 配置Log4J的一般步骤 #### 一、简介 Log4J是一个流行的Java日志框架,用于记录应用程序的运行状态。通过合理的配置,它可以有效地帮助开发人员追踪问题并进行性能分析。本文将详细介绍如何配置Log4J,包括下载...

    log4j日志使用说明

    #### 四、使用Log4j记录日志 为了在Java代码中使用Log4j,首先需要引入Log4j的API。 **示例代码:** ```java import org.apache.log4j.Logger; public class MyClass { protected final Logger log = Logger....

    LOG4J开发案例

    1. **引入Log4j库**:将`log4j-1.2.8.jar`添加到项目的类路径中。 2. **创建日志记录器实例**:通过`LogFactory.getLog(Class)`方法获取一个日志记录器实例。 ```java protected final Log log = LogFactory.get...

    log4j的用法

    在实际项目中,通常需要在项目目录下的 `src` 目录中创建 `log4j.properties` 文件,并配置相应的日志输出规则。例如: ```properties log4j.rootLogger=INFO, Console log4j.appender.Console=org.apache.log4j....

    log4j 使用说明 很信息

    #### 四、Log4j的日志级别 **4.1 Log4j支持的日志级别** Log4j支持以下几种日志级别: - **OFF**: 不记录任何日志。 - **FATAL**: 严重错误,通常会导致程序崩溃的情况。 - **ERROR**: 错误信息,一般指非致命的...

    log4j日志记录

    此外,Log4j还支持多语言环境下的日志处理,这意味着不仅限于Java,还可以在C/C++、.Net、PL/SQL等环境中使用,从而实现了跨平台、跨语言的日志管理。 #### 二、log4j配置指南 ##### 第一步:引入依赖 首先需要将...

    如何使用Log4j日志.rar

    本教程将引导你了解如何使用Log4j,包括其核心概念、配置以及在实际项目中的应用。 一、Log4j的核心组件 1. **Logger**: 日志器是Log4j的基本组件,负责生成日志事件。每个应用程序可以有多个Logger,它们以层级...

    log4j的配置祥解和使用说明

    Log4j是一款广泛使用的日志记录工具,尤其在Java开发中极为常见。它允许开发者灵活地控制日志信息的输出级别、格式以及目的地,从而帮助调试、监控和维护应用程序。以下是对Log4j配置和使用的一些关键知识点的详细...

    log4j基本知识

    4 详解4.1 定义配置文件在 `log4j.properties` 文件中,我们设置了 root logger 的级别(INFO),并指定了它使用哪些 appenders(stdout 和 R)。stdout 指向控制台,R 指向一个每天滚动的日志文件。同时,我们还...

    log4j简单教程 希望大家喜欢

    Log4j的核心配置通常存储在一个名为`log4j.properties`的文件中。下面我们将对这个文件中的关键配置进行详细介绍。 ##### 1. `log4j.rootCategory` **定义:**这是日志系统中根级别的类别定义。它用于指定整个系统...

    Log4J用法详解

    为了提高性能,Log4J允许在编译时静态决定是否输出日志,这通过使用Log4J的条件语句实现,如`if (logger.isDebugEnabled()) {...}`。这样,如果当前日志级别不包括DEBUG,那么条件内的代码将不会执行,避免了不必要...

Global site tag (gtag.js) - Google Analytics