在实际开发项目中,大部分产品的日志级别是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" />
观察控制台打印的日志级别。
相关推荐
这里提到的四个关键配置文件——`spring-mvc.xml`、`spring-mybatis.xml`、`web.xml`以及`log4j.properties`,对于一个基于Java的Web应用来说至关重要,特别是使用Spring MVC和MyBatis框架的时候。接下来,我们将...
总结来说,这个例子展示了如何通过`log4j.xml`配置文件和`Log4jConfigListener`监听器在Java Web应用中实现自动化的日志配置。通过这种方法,我们能灵活控制日志的输出,便于调试和问题排查,同时还能根据需要定制...
总结来说,Log4j提供了一套强大的日志管理框架,通过自定义Appender和PrintStream,我们可以轻松地将`System.out.println()`的输出整合到Log4j中,从而实现日志的集中管理和分析。这对于大型项目或者需要严格监控的...
Log4j的配置文件通常为`log4j.properties`或`log4j.xml`,在其中定义了日志的输出策略,如控制台、文件、网络等。 在"log4j输出日志到flume"的例子中,我们需要在Log4j配置文件中设置一个自定义的Appender(输出端...
4. `<listener>`标签引入了`org.springframework.web.util.Log4jConfigListener`监听器,这个监听器会在Web应用启动时读取`log4jConfigLocation`指定的配置文件,并初始化Log4j。 接下来,我们来看`log4j....
通过以上步骤,我们不仅实现了在SSH框架中集成Log4j的目标,还充分利用了Log4j提供的各种特性,如动态配置、灵活的日志文件管理等。这对于提高开发效率、简化运维工作具有重要意义。希望本文能帮助读者更好地理解和...
5. **配置Log4j**:在Log4j的配置文件(如log4j.properties或log4j.xml)中,添加你自定义的Appender,并指定相应的Logger。记得为Appender指定名称,以便在代码中引用。 6. **在代码中关联Appender和JTextArea**:...
- `spring.jar`或`spring-web.jar`:这两个包中包含了log4j.properties的监听器,使得可以在不重启服务器的情况下实时更新日志配置文件。需要注意的是,如果只引入`spring-web.jar`,可能会导致程序报错,此时需要...
`log4j-1.2.8.jar`是`log4j`的旧版本库,可能用于参考或兼容性测试,而`loggerCenter.rar`可能是日志中心服务的源码或配置文件,需要解压后查看具体实现。 总的来说,通过`log4j`源码的二次开发和`DatagramSocket`...
在本项目中,SLF4J被用作日志接口,而Log4j是实际的日志实现,提供日志记录、配置、级别控制等功能。 Log4j是Apache的一个开源项目,它提供了灵活的日志记录功能,包括控制日志输出级别、定制日志格式、支持多个...
1. **配置文件**:通常情况下,Log4j的配置文件为`log4j.properties`或`log4j.xml`,其中定义了各种日志级别、Appender和Layout。 2. **Appender**:Appender定义了日志输出的目标,如控制台、文件、邮件等。例如,...
在实际项目中,我们需要根据应用需求选择合适的配置文件(如log4j2.xml或log4j2.json),配置日志级别(DEBUG、INFO、WARN、ERROR、FATAL)、日志输出目的地(控制台、文件、数据库等)以及布局格式(PatternLayout...
`webAppRootKey`参数用于设置应用的根目录键,Log4jConfigListener则会在启动时寻找log4j.properties或log4j.xml配置文件,从而初始化日志系统。 5. **Struts2与Spring整合** 当Struts2和Spring整合时,通常需要...
- **说明**:通过注册`Log4jConfigListener`监听器,可以在应用启动时自动加载Log4J配置,并在配置文件发生变化时自动刷新配置。 #### 三、Log4J配置文件详解 Log4J配置文件通常是`.xml`格式,其中包含了日志输出...
此外,Logback还提供了动态配置的能力,可以通过JMX(Java Management Extensions)或者监听`logback.xml`文件的改动来实时更新配置,使得在运行时调整日志级别变得可能,这对于生产环境的监控和调试非常实用。...
例如,设置为60000毫秒(即60秒),意味着每60秒Log4j会检查配置文件是否有更新,并据此重新配置日志输出。 4. **Log4jConfigListener**:这是一个监听器类,属于Spring的一部分,用于初始化Log4j。当Web应用启动时...
通过`<listener>`标签引入`org.apache.log4j.web.Log4jServletContextListener`监听器,这样在Web应用启动时,Log4j就会自动加载配置并初始化。 7. **动态配置**:Log4j还支持动态更新配置,通过`JMX`(Java ...
- Log4j2支持动态配置,可以通过JMX(Java Management Extensions)接口或者监听配置文件变化来实时更新配置,无需重启应用。 4. **性能优化** - Log4j2引入了Lookup机制,允许在配置文件中引用环境变量、系统...
在Web应用中,我们经常利用logback.xml配置文件来定义日志的级别、输出格式以及文件存储位置等。 由于在实际部署中,可能会遇到将多个应用实例部署到同一台主机或文件系统上的情况,这时候如果让这些实例都向同一个...
`Log4jConfigListener`用于初始化Log4j的日志配置。例如,可以通过以下方式在`web.xml`中配置: ```xml <param-name>webAppRootKey <param-value>your.app.name <listener-class>org.springframework....