`

动态改变log4j的运行级别

    博客分类:
  • java
阅读更多

 Java Annotation手册 JBPM的分配任务的模式:推模式和拉模式

动态改变log4j的运行级别  

 

2009-02-03 10:18:50|  分类: JavaServer Page |字号 订阅

 做一个产品或者项目,在测试时一般要打印详细的log,发布以后,因为打印有效率问题,所以通常将log4j级别设置为最高,以提高效率,一旦客户那里出了问题,要查看详细的日志信息才能确定,因此打印日志就是很重要的事情,但是让客户手工修改log4j配置文件,不是很好的事情。

修改log4j级别

public class Log4jConfig {

 

public void enableInfo(String target){

LogManager.getLogger(target).setLevel(Level.INFO);

}

 

public void enableWarn(String target){

LogManager.getLogger(target).setLevel(Level.WARN);

}

 

public void enableError(String target){

LogManager.getLogger(target).setLevel(Level.ERROR) ;

}

 

public void enableDebug(String target){

LogManager.getLogger(target).setLevel(Level.DEBUG) ;

}

 

}

写个jsp可以很简单的做到,合理使用jstl

 

<%@ page import="org.apache.log4j.*" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ page contentType="text/html;charset=GBK" language="java" %>

<html>

<head><title>Log4J级别控制</title></head>

<meta http-equiv="Content-Type" content="text/html; charset=gbk" />

<body>

<h1>Log4J级别控制</h1>

<% String logName = request.getParameter("log");

    if (null != logName) {

        Logger log = ("".equals(logName) ?

                Logger.getRootLogger() : Logger.getLogger(logName));

        log.setLevel(Level.toLevel(request.getParameter("level"), Level.DEBUG));

    }

%>

<c:set var="rootLogger" value="<%= Logger.getRootLogger() %>"/>

<form>

    <table border="1">

        <tr>

            <th>Level</th>

            <th>Logger</th>

            <th>Set New Level</th>

        </tr>

        <tr>

            <td>${rootLogger.level}</td>

            <td>${rootLogger.name}</td>

            <td>

                <c:forTokens var="level" delims="," items="DEBUG,INFO,WARN,ERROR,OFF">

                    <a href="log4j.jsp?log=&level=${level}">${level}</a>

                </c:forTokens>

            </td>

        </tr>

        <c:forEach var="logger" items="${rootLogger.loggerRepository.currentLoggers}">

            <c:if test="${!empty logger.level.syslogEquivalent || param.showAll}">

                <tr>

                    <td>${logger.level}</td>

                    <td>${logger.name}</td>

                    <td>

                        <c:forTokens var="level" delims="," items="DEBUG,INFO,WARN,ERROR,OFF">

                            <a href="log4j.jsp?log=${logger.name}&level=${level}">${level}</a>

                        </c:forTokens>

                    </td>

                </tr>

            </c:if>

        </c:forEach>

        <tr>

            <td></td>

            <td><input type="text" name="log"/></td>

            <td>

                <select name="level">

                    <c:forTokens var="level" delims="," items="DEBUG,INFO,WARN,ERROR,OFF">

                        <option>${level}</option>

                    </c:forTokens>

                </select> <input type="submit" value="Add New Logger"/></td>

        </tr>

    </table>

</form>

Show <a href="log4j.jsp?showAll=true">所有已知 loggers</a>

</body>

</html>

如果使用spring 2.0和jmx会很简单 [servletname]-servlet.xml配置

<bean id="exporter"

 

     class="org.springframework.jmx.export.MBeanExporter">

 

     <property name="beans">

 

          <map>

 

              <entry key="bean:name=logBean"

 

                   value-ref="/hello.htm" />

 

          </map>

 

     </property>

 

</bean>

spring加入另外的两个配置

<entry key="bean:name=logBean" value-ref="logManager" />

 

<bean name="logManager" class="com.xx.Log4JManager"/>

写入

public class Log4JManager {

 

    public void setLogger(String packageName, String level) {

 

        LogManager.getLogger(packageName).setLevel(Level.toLevel(level));

 

    }

 

}

可以用JConsole 进行控制。

 

典型的log4j配置文件

 

# For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!

# For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.

log4j.rootLogger=INFO,stdout,logfile

 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n

 

log4j.appender.logfile=org.apache.log4j.RollingFileAppender

log4j.appender.logfile.File=../../MgrWeb/log/mgrweb.log

log4j.appender.logfile.MaxFileSize=1024KB

# Keep three backup files.

log4j.appender.logfile.MaxBackupIndex=20

# Pattern to output: date priority [category] - message

log4j.appender.logfile.layout=org.apache.log4j.PatternLayout

log4j.appender.logfile.layout.ConversionPattern=%d %p [%c\:%t\:%l] - %m%n

 

 

log4j.logger.org.hibernate.SQL=DEBUG

 

 

 

 

 

 

http://cancait.blog.163.com/blog/static/21335744200913101850280/

 

 

 

分享到:
评论

相关推荐

    动态设置log4j的日志级别

    总结来说,动态设置Log4j的日志级别是提高应用灵活性的重要手段,可以根据运行时的需求调整日志输出的详细程度,同时避免不必要的重启操作。通过配置文件、API、JMX以及Web界面等多种方式,开发者可以方便地实现这一...

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

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

    log4j-控制指定类,包的日志级别:log4j-demo.zip

    在Log4j中,控制日志级别主要通过配置文件`log4j.properties`或`log4j.xml`来实现。在提供的压缩包`log4j-demo`中,我们可以找到这样的配置文件。例如,如果我们想要控制特定类`com.example.MyClass`的日志级别为...

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

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

    tomcat下的log4j日志配置

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

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

    2. **配置文件**:创建`log4j.properties`或`log4j.xml`文件,定义日志级别和输出目的地。例如: ```properties # log4j.properties 示例 log4j.rootLogger=DEBUG, stdout, file log4j.appender.stdout=org.apache....

    log4j-api-2.17.1.jar和log4j-core-2.17.1.jar

    这个库实现了log4j-api中定义的接口,提供了具体的功能,比如各种Appender(控制台输出、文件写入、网络传输等)、Layout(日志格式化)、Filter(日志过滤)和Lookup(动态配置变量解析)。例如,`org.apache....

    log4j按功能保存日志

    Log4j是一款广泛使用的Java日志记录框架,它允许开发者按照功能模块或特定需求记录应用程序运行过程中的事件信息。在“log4j按功能保存日志”的场景中,我们通常会利用Log4j的配置灵活性,将不同功能的日志分别写入...

    log4j示例项目

    Log4j允许我们在运行时动态调整日志级别,避免不必要的日志输出,提高系统性能。 **6. 扩展与集成** 除了基本的日志功能,Log4j还支持与其他日志框架(如Logback)的互操作,以及与Spring等框架的集成,提供更强大...

    log4j.properties(完整版) log4j.properties(精简版)

    - **全局日志级别设置**:`log4j.rootLogger=DEBUG, stdout, FILE`,其中`DEBUG`是日志级别,`stdout`和`FILE`是Appender的名称。 - **定义Appender**:例如`log4j.appender.stdout=org.apache.log4j....

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

    此版本包含了log4j-1.2.17.jar主库文件,以及一个依赖包commons-logging-1.2.jar,这两个组件是Log4j正常运行所必需的。 **一、Log4j核心组件** 1. **log4j-1.2.17.jar**: 这是Log4j的主要库文件,包含了所有Log4j...

    Log4j2学习log4j2.xml配置模板

    --Configuration 后面的 status,这个用于设置 log4j2 自身内部的信息输出,可以不设置,当设置成 trace 时,你会看到 log4j2 内部各种详细输出--&gt; &lt;!--monitorInterval:Log4j 能够自动检测修改配置 文件和重新配置...

    log4j + slf4j-api + slf4j-log4j12

    使用这些组件时,开发者需要在项目中配置log4j的配置文件(通常是`log4j.properties`或`log4j.xml`),定义日志输出的级别、格式、目的地等。SLF4J API的使用则是在代码中引入相应的依赖,并通过SLF4J的...

    log4j使用教程(详解)

    - 日志级别动态调整:在运行时可以通过JMX(Java Management Extensions)或者修改配置文件动态改变日志级别。 - 异步日志记录:通过使用AsyncAppender,可以实现日志记录的异步化,提高系统性能。 - 日志归档:...

    log4j-jsonlayout

    Log4j是Apache组织开发的一个开源日志框架,广泛应用于Java环境,提供灵活的日志记录控制,允许开发者根据需要调整日志级别,定制日志格式,以及将日志信息输出到各种目的地。 **JSONLayout介绍** JSONLayout是Log...

    log4j.jar包,和log4j.properties配置文件下载

    Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中插入日志语句,以便跟踪程序的运行情况、调试错误、监控性能等。这个框架由Apache软件基金会开发,是许多Java项目的首选日志解决方案,因为它具有...

    log4j实用配置扩展

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

    log4j jar包

    《深入理解Log4j:Apache日志框架的基石》 在Java编程领域,日志记录是不可或缺的一部分,它为开发者提供了程序运行时的详细信息,帮助调试和追踪问题。而Log4j,作为Apache软件基金会的一个项目,是Java平台上的一...

    tomcat8更换log4j记录日志

    压缩包中的"**lib**"目录可能包含Log4j的必要依赖库,比如`log4j.jar`,这是运行Log4j的日志记录功能所必需的。确保这些库文件被添加到Tomcat的`lib`目录,使得所有部署的应用都能访问Log4j。 综上所述,通过正确...

    log4j-1.2.16下载

    4. **性能考虑**:虽然Log4j提供了丰富的功能,但过多的日志记录会影响程序性能,因此需合理设置日志级别和使用适当Appender。 总结,Log4j-1.2.16作为一款成熟稳定的日志框架,其强大而灵活的功能使得它在Java开发...

Global site tag (gtag.js) - Google Analytics