`
tobato
  • 浏览: 101651 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

如何更好的掌控日志输出-Log4j <logger>配置项介绍

阅读更多
经常看见开发Web应用的时候,有人被控制台输出的大量日志弄得眼花缭乱,启动一个应用,控制台打出
N多没用的日志。那么,如何控制最大限度log4j的配置文件输出需要的调试信息呢?

Log4j的Logger组件配置可以帮助我们屏蔽不必要的日志输出,尤其在项目应用了大量第三方组件的时候,
通过控制Logger组件可以控制输出某一个组件的日志级别,帮助我们更好的进行调试。

注意:控制的粒度到类一级。也就是说,可以控制某一个类的日志如何输出。
限制:虽然不可以控制到方法一级,但是基本上也够用了。

假设我们现在的类命名空间在 com.foo 下面
我们有2个包
package com.foo.cartoon
package com.foo.common

这2个包下面分别有自己的类文件
在package com.foo.cartoon包下有
com.foo.cartoon.Cat;

在package com.foo.common包下有
com.foo.common.Omia;

使用如下的配置文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                value="%p [%t] %c{1}.%M(%L) | %m%n"/>
        </layout>
    </appender>

    <logger name="com.foo">
        <level value="INFO"/>
    </logger>

    <logger name="com.foo.common">
        <level value="DEBUG"/>
    </logger>     
      
    <root>
        <level value="WARN"/>
        <appender-ref ref="CONSOLE"/>
    </root>

</log4j:configuration>



那么 针对所有日志(<root>项配置) 都使用WARN级别输出
com.foo 路径下的Class 都使用INFO 级别输出
com.foo.common 路径下的Class 都使用DEBUG 级别输出

---------------

假如想要控制com.foo.common.Omia这一个类的日志输出级别
只需要使用如下配置
<logger name="com.foo.common.Omia">
<level value="DEBUG"/>
</logger>

---------------

如果项目中使用了第三方组件,那么可以用这样的方式控制日志

<logger name="org.apache.struts2">
<level value="DEBUG"/>
</logger>

<logger name="org.springframework">
<level value="INFO"/>
</logger>

这样就可以让struts2的日志按Debug级别输出,让Spring的日志按Info级别输出
分享到:
评论
7 楼 gsjch 2008-11-17  
少了过滤功能,可以把WARN,DEBUG等信息输出到不同的文件。但一直有个难点是:如何把各种类型的信息输出到不同的文件。比如a.log中记录的是一种类型(比如全部的sql语句)的日志(包括所有级别的日志)
6 楼 tobato 2008-10-05  
stonecai 写道

好似还是很不方便,比如: &lt;logger name="org.springframework"&gt; &lt;level value="ERROR"/&gt; &lt;/logger&gt; 这样org.springframework下面的类是可以控制到,但 org.springframework.jdbc org.springframework.aop org.springframework.core 等等包下面的类控制不到 如果我现在不想输入spring框架下的,总不能每个包都配置上吧?请问还有比较好的方法吗?还是我理解错了

可以控制到的
5 楼 stonecai 2008-09-26  
好似还是很不方便,比如:
<logger name="org.springframework">
<level value="ERROR"/>
</logger>
这样org.springframework下面的类是可以控制到,但
org.springframework.jdbc
org.springframework.aop
org.springframework.core
等等包下面的类控制不到
如果我现在不想输入spring框架下的,总不能每个包都配置上吧?请问还有比较好的方法吗?还是我理解错了
4 楼 bobo 2008-02-22  
tobato 写道
qichunren 写道
我下载了你的源码,没有看到com.frame.model.BaseObject这个类啊,你的com.foo.cartoon.Cat和com.foo.common.Omia都是继承这个BaseObject的啊,
这个BaseObject中是不是有如下的代码啊?
public static Log log = LogFactory.getLog(BaseObject.class);

是的,代码已经更新.

可能是
protected final Log log = LogFactory.getLog(getClass());
而不是
public static Log log = LogFactory.getLog(BaseObject.class);

3 楼 tobato 2008-02-21  
qichunren 写道
我下载了你的源码,没有看到com.frame.model.BaseObject这个类啊,你的com.foo.cartoon.Cat和com.foo.common.Omia都是继承这个BaseObject的啊,
这个BaseObject中是不是有如下的代码啊?
public static Log log = LogFactory.getLog(BaseObject.class);

是的,代码已经更新.
2 楼 qichunren 2008-02-19  
我下载了你的源码,没有看到com.frame.model.BaseObject这个类啊,你的com.foo.cartoon.Cat和com.foo.common.Omia都是继承这个BaseObject的啊,
这个BaseObject中是不是有如下的代码啊?
public static Log log = LogFactory.getLog(BaseObject.class);
1 楼 e3002 2008-01-03  
就是自定义logger

相关推荐

    spring-boot-starter-log4j2

    《深入理解Spring Boot Starter Log4j2》 在Java开发领域,日志系统扮演着至关重要的角色,它帮助开发者记录程序运行过程中...在实际开发中,掌握Log4j2的配置和使用,能帮助我们更好地追踪问题,提升项目的可维护性。

    SSM整合中的Log4j日志的配置详情

    本文将详细介绍 SSM 整合中的 Log4j 配置详情,帮助读者更好地理解 Log4j 的使用。 一、Log4j 的基本概念 Log4j 是 Apache 软件基金会提供的一个日志记录工具,能够记录和输出项目中的日志信息。Log4j 的核心组件...

    [简单]log4jdbc-log4j2配置简记

    3. 配置log4j2:创建一个log4j2的配置文件(如log4j2.xml或log4j2.json),定义日志输出的模式和级别。例如,以下是一个简单的配置示例: ```xml &lt;Configuration status="WARN"&gt; &lt;Appenders&gt; &lt;Console name=...

    Flume-ng在windows环境搭建并测试+log4j日志通过Flume输出到HDFS.docx

    在本文中,我们将介绍如何在 Windows 环境下搭建 Flume-ng,并使用 Log4j 将日志输出到 HDFS。 一、Flume-ng 安装与配置 首先,需要下载 Flume-ng 并解压到指定目录。然后,需要设置环境变量,新建 FLUME_HOME ...

    Slf4j+log4j2.docx

    总之,SLF4J+Log4j2的组合提供了强大的日志管理和输出能力,允许开发者自定义日志格式、控制输出级别,以及在Web环境中方便地配置和初始化日志系统。通过合理配置和使用,可以帮助开发者更好地追踪问题、监控系统...

    Spring Boot使用Log4j2的实例代码

    本文主要介绍了Spring Boot使用Log4j2的实例代码,包括log4j2.xml配置和Maven依赖项配置。下面我们将详细介绍这些知识点。 Log4j2简介 Log4j2是Java中的一种日志记录工具,提供了丰富的Appender,例如...

    springboot-log4j.zip

    在Java开发领域,Spring Boot是一个...通过引入Log4j依赖,配置日志输出格式和级别,以及在代码中使用`Logger`接口,我们可以实现高效且易于管理和分析的日志系统。这在开发、调试和维护Spring Boot应用时非常有用。

    log4j2.xml记录日志到到数据库

    本示例将详细介绍如何配置并使用Log4j2将日志信息记录到MySQL数据库中。 首先,我们要理解Log4j2的核心概念。Log4j2主要包括以下几个组件: 1. **配置文件**:如`log4j2.xml`,这是Log4j2的配置中心,定义了日志...

    logging-log4j2-log4j-2.15.0-rc2.zip

    Log4j 2是Log4j的下一代版本,它引入了大量新特性,包括异步日志记录、可插拔的日志格式化器、动态配置以及丰富的API。相较于Log4j 1.x,Log4j 2不仅在性能上有所增强,而且在用户体验和安全性上都有显著改进。 2....

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

    Log4j2作为Log4j的升级版,提供更好的性能和更丰富的特性,如异步日志记录,JSON布局,以及可插拔的日志配置。 #### 配置Log4j2 1. **添加依赖**:在`pom.xml`中,添加Log4j2的依赖。 ```xml &lt;dependency&gt; ...

    log4j(二):动态配置日志输出路径

    在Java开发中,日志记录是一项至关重要的任务,它帮助开发者追踪程序运行状态,调试问题,以及进行性能分析。...通过阅读《log4j(二):动态配置日志输出路径》这篇博文,你可以获得更详细的操作步骤和实践指导。

    log4j中配置日志文件相对路径方法(PDF)

    ### Log4j中配置日志文件相对路径方法详解 #### 概述 在软件开发过程中,日志记录是一项重要的功能,它有助于开发者调试程序、监控应用程序的运行状态以及追踪问题。`Log4j`作为一款优秀的日志管理工具,被广泛应用...

    tomcat9 slf4j+log4j2 写日志.zip

    Log4j2相比Log4j 1.x有许多改进,包括性能提升、更丰富的配置选项、异步日志记录支持以及动态日志配置等。 在Tomcat 9中配置SLF4J和Log4j2,你需要以下步骤: 1. **添加依赖**:确保你的项目中包含SLF4J和Log4j2的...

    Common-log 和log4j2 配合使用

    `log4j2`是`log4j`的升级版,是一个功能强大且性能高效的日志框架,提供了丰富的配置选项,包括异步日志记录、日志级别动态调整、自定义日志布局等。相比于`log4j`,`log4j2`在性能和可扩展性上有了显著提升,并且...

    log4j之基本配置

    ### Log4j基本配置详解 #### 一、Log4j简介 Log4j是Apache的一个开源项目,通过使用...通过以上步骤,我们可以根据不同的需求和场景选择合适的配置方式来定制Log4j的行为,从而更好地满足项目开发中的日志管理需求。

    Log4j2异步写日志源码

    Log4j2是Apache提供的一款强大且灵活的日志框架,它的出现替代了早期的Log4j,提供了更高的性能和更丰富的功能。本文将深入探讨如何在Log4j2中实现异步写日志,并通过提供的文件`TestController.java`、`log4j2.xml`...

    Springboot项目使用Slf4j将日志保存到本地目录的实现代码

    Slf4j 是一个 Java 日志记录门面,它提供了一个通用的日志记录API,允许开发者使用不同的日志记录框架,例如 Logback、Log4j 等。在 Springboot 项目中,Slf4j 是默认的日志记录框架。本文将介绍如何使用 Slf4j 将...

    log4j.jar及log4j.xml

    **日志框架Log4j详解** 在Java开发中,日志记录是一项至关重要的任务,它帮助开发者追踪程序运行...通过合理的配置和使用,Log4j能够为开发者提供强大且灵活的日志管理能力,帮助他们更好地监控和维护Java应用程序。

    log4j+slf4j实现 log4j测试代码,log4j+slf4j实现 log4j测试代码

    2. **配置Log4j**:在项目的类路径下创建`log4j.properties`或`log4j.xml`配置文件,指定日志级别、输出目的地等。例如: ```properties # log4j.properties log4j.rootLogger=DEBUG, stdout log4j.appender....

    log4j2在项目中的配置,对不同级别的日志进行不同文件的存储

    Log4j2是一个流行的、高效且可配置的日志框架,广泛应用于各种项目。本文将详细解释如何配置Log4j2以实现不同级别的日志分别存储到不同的文件中。 首先,确保在项目中正确引入了Log4j2的jar包。通常,这可以通过在...

Global site tag (gtag.js) - Google Analytics