`
德安德鲁
  • 浏览: 45024 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Log4j,实现加载自定义log4j.xml配置文件,并实现动态监听log4j.xml日志级别更新

阅读更多

 

 

 

 

在实际开发项目中,大部分产品的日志级别是ERROR级别的,因为这样可以提升系统运行效率,也可以防止INFO日志过多,日志文件很快被写满,以至于系统不能保存长时间的日志。进而造成定位问题不方便。

 

但是在ERROR级别下可能无法看到系统运行的详细日志信息。有时候需要查看INFO日志。所以最好有一种方法可以在系统运行过程中,动态修改日志级别。

 

实现动态修改日志级别,有两种办法:

 

1、利用Log4j提供的类和方法

2、自己实现监控log4j.xml文件更新,并实现动态配置更新。

 

 

 

 

 

 

 

一、利用Log4j提供的动态配置更新方法实现动态修改日志级别。

调用PropertyConfigurator或者DOMConfigurator类的configureAndWatch(String configFileName)或者configureAndWatch(String configFileName,long delay)

 

 

走读Log4j DOMConfigurator类configureAndWatch方法源码,发现只要是调用configureAndWatch()方法,Log4j就会启动一个线程,根据入参delay或者默认的1分钟时间周期扫描指定的log4j.xml文件的更新情况,如果发现有更新则重新加载log4j.xml配置。

 

代码示例:

import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;

/**
 * 
 */

/**
 * @author Administrator
 * 
 */
public class LogConfigurator
{
	private static Logger logger = Logger.getLogger(LogConfigurator.class);
	
	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		DOMConfigurator.configureAndWatch("d:\\log4j\\log4j.xml", 5000L);
		while (true)
		{
			try
			{
				logger.info("hello-Info");
				logger.debug("hello-Debug");
				logger.error("hello-Error");
				Thread.sleep(5000);
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
			
		}
	}
	
}

在D盘,Log4j文件夹下创建log4j.xml文件。内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

	<!-- 类似定义logger节点打印具体类,或某包中的指定级别以上日志 -->
	<logger name="LogConfigurator">
		<level value="info" />
		[color=red]
		<appender-ref ref="console" />
		[/color]
	</logger>

	<appender name="console" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[DomConfigurator Test][%d{ABSOLUTE}][%-5p][%m]%n" />
		</layout>
	</appender>

</log4j:configuration>

 

 运行LogConfigurator的main方法,并随时修改D:\log4j\log4j.xml文件中定义的日志级别。

<level value="info" />

观察控制台打印的日志级别。

 

分享到:
评论
1 楼 牛人云小白 2013-06-30  
你说这个我没回答上来,是不是人家一听都知道我是没有工作过的。

相关推荐

    项目配置文件( spring-mvc.xml spring-mybatis.xml web.xml log4j.properties)

    这里提到的四个关键配置文件——`spring-mvc.xml`、`spring-mybatis.xml`、`web.xml`以及`log4j.properties`,对于一个基于Java的Web应用来说至关重要,特别是使用Spring MVC和MyBatis框架的时候。接下来,我们将...

    log4j.xml配置实现.pdf

    总结来说,这个例子展示了如何通过`log4j.xml`配置文件和`Log4jConfigListener`监听器在Java Web应用中实现自动化的日志配置。通过这种方法,我们能灵活控制日志的输出,便于调试和问题排查,同时还能根据需要定制...

    Log4j将System.out搞到log4j中输出四

    总结来说,Log4j提供了一套强大的日志管理框架,通过自定义Appender和PrintStream,我们可以轻松地将`System.out.println()`的输出整合到Log4j中,从而实现日志的集中管理和分析。这对于大型项目或者需要严格监控的...

    log4j输出日志到flume

    Log4j的配置文件通常为`log4j.properties`或`log4j.xml`,在其中定义了日志的输出策略,如控制台、文件、网络等。 在"log4j输出日志到flume"的例子中,我们需要在Log4j配置文件中设置一个自定义的Appender(输出端...

    Log4j 相对路径配置

    4. `&lt;listener&gt;`标签引入了`org.springframework.web.util.Log4jConfigListener`监听器,这个监听器会在Web应用启动时读取`log4jConfigLocation`指定的配置文件,并初始化Log4j。 接下来,我们来看`log4j....

    SSH框架中配置log4j的方法

    通过以上步骤,我们不仅实现了在SSH框架中集成Log4j的目标,还充分利用了Log4j提供的各种特性,如动态配置、灵活的日志文件管理等。这对于提高开发效率、简化运维工作具有重要意义。希望本文能帮助读者更好地理解和...

    重定向log4j日志到jtextarea

    5. **配置Log4j**:在Log4j的配置文件(如log4j.properties或log4j.xml)中,添加你自定义的Appender,并指定相应的Logger。记得为Appender指定名称,以便在代码中引用。 6. **在代码中关联Appender和JTextArea**:...

    log4j的作用及测试

    - `spring.jar`或`spring-web.jar`:这两个包中包含了log4j.properties的监听器,使得可以在不重启服务器的情况下实时更新日志配置文件。需要注意的是,如果只引入`spring-web.jar`,可能会导致程序报错,此时需要...

    log4j源码二次开发-集中处理日志消息

    `log4j-1.2.8.jar`是`log4j`的旧版本库,可能用于参考或兼容性测试,而`loggerCenter.rar`可能是日志中心服务的源码或配置文件,需要解压后查看具体实现。 总的来说,通过`log4j`源码的二次开发和`DatagramSocket`...

    MINA框架 多人聊天的技术原型 包含slf4j和Log4j配置

    在本项目中,SLF4J被用作日志接口,而Log4j是实际的日志实现,提供日志记录、配置、级别控制等功能。 Log4j是Apache的一个开源项目,它提供了灵活的日志记录功能,包括控制日志输出级别、定制日志格式、支持多个...

    log4j-1.2.16

    1. **配置文件**:通常情况下,Log4j的配置文件为`log4j.properties`或`log4j.xml`,其中定义了各种日志级别、Appender和Layout。 2. **Appender**:Appender定义了日志输出的目标,如控制台、文件、邮件等。例如,...

    log4j—all.jar

    在实际项目中,我们需要根据应用需求选择合适的配置文件(如log4j2.xml或log4j2.json),配置日志级别(DEBUG、INFO、WARN、ERROR、FATAL)、日志输出目的地(控制台、文件、数据库等)以及布局格式(PatternLayout...

    web.xml配置解析.pdf

    `webAppRootKey`参数用于设置应用的根目录键,Log4jConfigListener则会在启动时寻找log4j.properties或log4j.xml配置文件,从而初始化日志系统。 5. **Struts2与Spring整合** 当Struts2和Spring整合时,通常需要...

    Spring对Log4J的增强.txt

    - **说明**:通过注册`Log4jConfigListener`监听器,可以在应用启动时自动加载Log4J配置,并在配置文件发生变化时自动刷新配置。 #### 三、Log4J配置文件详解 Log4J配置文件通常是`.xml`格式,其中包含了日志输出...

    Java的日志配置文件 logback.xml

    此外,Logback还提供了动态配置的能力,可以通过JMX(Java Management Extensions)或者监听`logback.xml`文件的改动来实时更新配置,使得在运行时调整日志级别变得可能,这对于生产环境的监控和调试非常实用。...

    spring 配置log4j.docx

    例如,设置为60000毫秒(即60秒),意味着每60秒Log4j会检查配置文件是否有更新,并据此重新配置日志输出。 4. **Log4jConfigListener**:这是一个监听器类,属于Spring的一部分,用于初始化Log4j。当Web应用启动时...

    log4j各种配置连接

    通过`&lt;listener&gt;`标签引入`org.apache.log4j.web.Log4jServletContextListener`监听器,这样在Web应用启动时,Log4j就会自动加载配置并初始化。 7. **动态配置**:Log4j还支持动态更新配置,通过`JMX`(Java ...

    log4j2.config.zip

    - Log4j2支持动态配置,可以通过JMX(Java Management Extensions)接口或者监听配置文件变化来实时更新配置,无需重启应用。 4. **性能优化** - Log4j2引入了Lookup机制,允许在配置文件中引用环境变量、系统...

    在logback.xml中自定义动态属性的方法

    在Web应用中,我们经常利用logback.xml配置文件来定义日志的级别、输出格式以及文件存储位置等。 由于在实际部署中,可能会遇到将多个应用实例部署到同一台主机或文件系统上的情况,这时候如果让这些实例都向同一个...

    web.xml配置解析[总结].pdf

    `Log4jConfigListener`用于初始化Log4j的日志配置。例如,可以通过以下方式在`web.xml`中配置: ```xml &lt;param-name&gt;webAppRootKey &lt;param-value&gt;your.app.name &lt;listener-class&gt;org.springframework....

Global site tag (gtag.js) - Google Analytics