`
aaron0927
  • 浏览: 28438 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Log4j给不同的logger动态设置不同的配置

 
阅读更多

      现在有log4j.properties 配置文件,假如现在需要动态改变 logger 的配置,动态地输出到不同的目录,则可以按如下代码操作:

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

import org.apache.log4j.Hierarchy;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.spi.LoggerRepository;
import org.apache.log4j.spi.RootLogger;

public class TestLog4j {

	public static void main(String[] args) {

		PropertyConfigurator pc = new PropertyConfigurator();
		Properties p = new Properties();

		LoggerRepository lr1 = null;
		LoggerRepository lr2 = null;

		Logger logger1 = new RootLogger(Level.ALL);
		Logger logger2 = new RootLogger(Level.ALL);

		try {
			//p.load(new FileInputStream("log4j.properties"));
			p.load(TestLog4j.class.getResourceAsStream("log4j.properties"));
			
			lr1 = new Hierarchy(logger1);
			lr2 = new Hierarchy(logger2);

			p.setProperty("log4j.appender.D.File", "D:/test1.log");
			pc.doConfigure(p, lr1);

			p.setProperty("log4j.appender.D.File", "D:/test2.log");
			pc.doConfigure(p, lr2);

			logger1.info("hello world logger1");
			logger2.info("hello world logger2");

		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}

 property 文件如下:

### set log levels ###
log4j.rootLogger = debug , stdout , D

### 输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n

### 输出到日志文件 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D:/logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG ## 输出DEBUG级别以上的日志
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

### 保存异常信息到单独文件 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D:/logs/error.log ## 异常日志文件名
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ERROR ## 只输出ERROR级别以上的日志!!!
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

 

执行以后可以动态生成:D:/test1.log 和 D:/test2.log.

分享到:
评论

相关推荐

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

    总结来说,Log4j的动态配置日志输出路径主要涉及对配置文件的解析和重新加载,以及在运行时使用API直接调整日志设置。理解并熟练运用这些方法,可以帮助我们在开发过程中更灵活地管理和监控日志,提高开发效率和问题...

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

    Log4j 在 SSM 整合中的配置详解 Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM...

    Spring项目中怎么配置log4j

    在Spring项目中,我们可以使用Spring的`PropertyPlaceholderConfigurer`来加载外部化的log4j配置,这样在不同环境中可以使用不同的配置文件。在Spring的配置文件`applicationContext.xml`中添加以下代码: ```xml ...

    tomcat下的log4j日志配置

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

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

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

    老生常谈Log4j和Log4j2的区别(推荐)

    下面我们将从配置文件类型、核心JAR包、文件渲染和Log调用四个方面来比较Log4j和Log4j2的区别。 配置文件类型 Log4j通过一个.properties文件作为主配置文件,而Log4j2则弃用了这种方式,采用的是.xml、.json或者....

    log4j 动态配置

    日志级别的配置也是动态配置中的一个重要方面,通过在`log4j.properties`文件中设置不同的日志级别,可以控制哪些级别的日志会被记录下来。例如: ``` log4j.rootLogger=DEBUG, R ``` 上述配置表示root ...

    log4j jar包

    Log4j的配置主要通过配置文件`log4j.properties`或`log4j.xml`完成。例如,以下配置将创建一个名为“root”的Logger,输出级别设置为INFO,并将日志信息写入文件: ```properties # log4j.properties 示例 log4j....

    log4j实用配置扩展

    ### log4j实用配置扩展 #### 一、log4j简介与重要性 Log4j是一种广泛使用的开源日志框架,由Apache软件基金会维护。它主要用于记录Java应用程序的运行时信息,帮助开发者追踪应用程序的行为、调试问题以及进行性能...

    log4j配置和加载方法

    在`.properties`文件中,配置信息通过键值对的形式呈现,如示例中的`log4j.category.org.zblog=ERROR,A1`,这里指定了`org.zblog`这个logger的日志级别为`ERROR`,并关联到名为`A1`的appender。 2. **.xml格式**:...

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

    接下来,`log4j配置说明.txt`文件通常会提供更详细的解释和示例,包括如何配置不同的appender(如FileAppender、RollingFileAppender等),如何定义不同logger的级别,以及如何使用自定义的error handler和filter。...

    Log4j 把不同包的日志打印到不同位置

    这篇博客"Log4j 把不同包的日志打印到不同位置"可能详细解释了如何利用Log4j配置来实现特定包的日志定向输出,以便于管理和分析来自不同模块的日志信息。 在Java应用中,我们常常会遇到多个模块或者不同包的类同时...

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

    你可以为Root Logger配置Appender和日志级别,这样所有的未指定Logger都将遵循这些设置。 **四、配置示例** ```properties # 设置Root Logger级别 log4j.rootLogger=DEBUG, Console, File # 控制台Appender log4j...

    log4j.properties配置文件

    #### 四、Root Logger配置 ```properties log4j.rootLogger=debug,stdout ``` - `log4j.rootLogger`: 定义了根日志记录器(root logger)的默认级别和使用的Appender。 - `debug`: 设置根日志记录器的默认级别为...

    Log4J_全能配置文件.pdf

    ### Log4J 全能配置文件详解 #### 一、概述 Log4J是一款非常流行的Java日志框架,被广泛应用于各种规模的应用程序中。它提供了灵活的日志记录机制,可以将日志输出到不同的目的地,如控制台、文件、数据库等,并且...

    动态设置log4j的日志级别

    本文将详细讲解如何动态设置Log4j的日志级别,以满足不同场景下的需求。 首先,我们要理解日志级别的概念。Log4j提供了多个日志级别,从低到高依次为:DEBUG、INFO、WARN、ERROR和FATAL。不同的日志级别用于记录...

    Log4j2结合Slf4j配置使用

    Log4j2 结合 Slf4j 配置...通过配置 Log4j2 的配置文件 log4j2.xml,我们可以定义不同的日志记录机制,例如输出到控制台、文件、数据库等。Slf4j 则提供了统一的日志记录接口,使得我们可以轻松地更换日志记录工具。

    log4j.properties配置详解

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

    log4j与web.xml的配置

    2. **Log4j配置文件(log4j.properties或log4j.xml)** - 在Java项目中,通常会有一个log4j配置文件,用于定义日志记录的级别、输出方式和格式。 - 示例配置: ``` log4j.rootLogger=DEBUG, FILE log4j....

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

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

Global site tag (gtag.js) - Google Analytics