`
德安德鲁
  • 浏览: 43666 次
  • 性别: 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  
你说这个我没回答上来,是不是人家一听都知道我是没有工作过的。

相关推荐

    springboot参考指南

    使用Gradle自定义配置进行Repackage i. 59.8.1. 配置选项 Spring Boot参考指南 6 ix. 59.9. 理解Gradle插件是如何工作的 iii. 60. 对其他构建系统的支持 i. 60.1. 重新打包存档 ii. 60.2. 内嵌的库 iii. 60.3. 查找...

    spring+shiro+ehcache例子

    在web.xml中配置log4j信息打印 (需要自己将log4j的配置文件给打开) 三: 配置文件 查看/src/config/ ,配置文件可观察文件名称理解 四: 登录名为2:可以进行权限的验证,以及shiro的缓存。 登录名为任意...

    Logback用户手册中文版

    3.6. 配置文件修改后自动重新加载 ................................................................... 22 3.7. 直接调用 JoranConfigurator ....................................................................

    oracle 11g的警告日志和监听日志的删除方法

    oracle 11g的监听日志和警告日志都是在/u01/oracle/diag/tnslsnr/oracle/listener目录和/u01/oracle/diag/rdbms/db1/db1目录下都有以下分别简称listener目录和db1目录。这两目录下都有如下目录:alert cdump hm ...

    BOS 技术整理

    rc/main/resource 提供 config.properties 外部属性文件、log4j.properties 日志配置文件 配置文件如下: applicationContext.xml  struts2 注解 类上 @ParentPackage 包继承谁? extends=”struts-default...

    ssh(structs,spring,hibernate)框架中的上传下载

    WEB-INF下的applicationContext.xml为Spring的配置文件,struts-config.xml为Struts的配置文件,file-upload.jsp为文件上传页面,file-list.jsp为文件列表页面。  本文后面的章节将从数据持久层->业务层->Web层的...

    java后台框架源码

    filter:Log4jFormatFilter(格式化log4j日志输出的),SessionCheckFilter(登陆拦截器) interceptor:权限拦截包 listener:目前只有session的监听器,用于监听session的 service:具体的业务处理包 util:项目工具包 ...

    Java整合SSH框架

    在Java中整合SSH(Spring + Struts2 + Hibernate)框架时,需要引入相应的jar包。以下是一些基本的jar包和它们的用途: Spring基本和IOC的jar包: ...如log4j, junit等。 整合用的jar包: 用于整合Spring和Struts2的

    button按钮的四种监听及实例

     二:在XML文件中定义OnClick属性,在java代码中对应方法。  在button下加上如下代码android:onClick=skip(skip即为方法对应的名字,然后在java代码中在定义具体的方法)   android:id="@+id/button1" ...

    逆向工程极速搭建SSM-Redis-activeMQ-Quartz整合项目

    配置控制生成输出文件(listenter、filter、quartz、activeMQ、redis、webXml、initXml、contextXml) 项目可统计在线人数,无操作超时退出,监听网络请求,配置log4j、数据库连接等文件; 自动封装sql语句,自动...

    global-log-context

    查看 src/main/resources/log4j.properties 以获取示例配置。 发展 使用 LogAppenderTestFixture 运行一个简单的服务器来监听日志消息。 运行 GlobalContextSocketAppender 中的 main 方法以发送测试日志消息。 ...

    Jetty中文手册

    如何配置自定义错误页面(Custom Error Pages) 配置Jetty Statistics(统计) 配置Jetty Statistics教程 配置Request Log教程 Java-monitor 故障排除 如何使用Jetty Dump Feature(特性) Webtide Blog–Jetty ...

    Ajax-log-listener.zip

    Ajax-log-listener.zip,使用jquery(php和mysql)的大数据日志监听器,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不重新...

    JavaWeb 开发指南 PPT课件

    网站开发指南 清华大学出版社 1章 JSP技术简介 2章 JSP语法 3章 JSP内置对象 4章 Servlet技术介绍 ...23章 使用Log4j进行Web应用的日志管理与程序调试 24章 使用XDoclet简化JSP 25章 使用Ant管理JSP Web应用

    primefaces-6.0.rar

    PrimeFaces是一个用于提高JSF Web应用程序开发效率的开源类库。 UI Components:PrimeFaces UI模块提供了拥有Rich Web用户体 验的各种JSF组件。... Log4J适配器;FacesMessage监听器;组件树可视化查看器

    +Flex+集成到+Java+EE+应用程序的最佳实践(完整源代码)

    BlazeDS 将读取 services-config.xml 配置文件,该配置文件又引用了 remoting-config.xml、proxy-config.xml 和 messaging-config.xml 这 3 个配置文件,所以,一共需要 4 个配置文件。 由于 BlazeDS 需要将 Java ...

    PrimeFacesV6.0.jar

    PrimeFaces是一个用于提高JSF Web应用程序开发效率的开源类库。 主要由三个模块组成: 1、UI Components:PrimeFaces UI模块提供了拥有Rich Web用户体验的... Log4J适配器;FacesMessage监听器;组件树可视化查看器。

    Spring.net框架

    我们的Factory就是利用这种方式根据配置文件动态加载程序集,动态创建对象并设置属性的。有了这个Factory,MainApp中的内容就很简单了: using System; namespace IocInCSharp { public class MainApp { public ...

    Java学习笔记-个人整理的

    {14.4}dom4j}{207}{section.14.4} {14.5}XPath}{210}{section.14.5} {14.6}apache.commons}{211}{section.14.6} {15}sqlite3}{213}{chapter.15} {16}Web基础}{215}{chapter.16} {16.1}...

    Java Web整合开发王者归来(共4部分含源代码)part4

    第8篇为工具篇,内容包括在Java Web项目中常用的开源工具框架、主要有版本管理工具SVN、日志工具commons-logging与Log4J、报表图形引擎JFreeChart、PDF组件iText等;第9篇为实战篇,内容为两个典型的应用系统:论坛...

Global site tag (gtag.js) - Google Analytics