log4j对象改变日志级别可批量的改变所有级别,或是根据条件改变日志级别。
log4j配置文件:
log4j.rootLogger=ERROR,FILE,CONSOLE,EXECPTION
#log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.File=${catalina.home}/logs/boss.log
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.FILE.Encoding=utf-8
#log4j.appender.FILE.MaxFileSize=10MB
#log4j.appender.FILE.MaxBackupIndex=100
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss,SSS}][%t][%l][%p]: %m%n
log4j.appender.EXECPTION=org.apache.log4j.DailyRollingFileAppender
log4j.appender.EXECPTION.File=${catalina.home}/logs/error.log
log4j.appender.EXECPTION.Threshold=ERROR
log4j.appender.EXECPTION.Encoding=utf-8
#log4j.appender.EXECPTION.MaxFileSize=10MB
#log4j.appender.EXECPTION.MaxBackupIndex=100
log4j.appender.EXECPTION.layout=org.apache.log4j.PatternLayout
log4j.appender.EXECPTION.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss,SSS}][%t][%l][%p]: %m%n
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%d{HH:mm:ss,SSS}][%-5p][%t][%M] (%F:%L) - %m%n
log4j.appender.Requests=org.apache.log4j.RollingFileAppender
log4j.appender.Requests.File=${catalina.home}/logs/jotm.log
log4j.appender.Requests.MaxFileSize=100MB
log4j.appender.Requests.MaxBackupIndex=5
log4j.appender.Requests.Encoding=utf-8
log4j.appender.Requests.layout=org.apache.log4j.PatternLayout
log4j.appender.Requests.layout.ConversionPattern=%10r [%-5c{1}] %7p - %C{1}.%M(%L) : %m\n
#c3p0
log4j.logger.com.mchange.v2=ERROR
log4j.logger.com.opensymphony=ERROR
log4j.logger.org.apache=ERROR
log4j.logger.org.springframework=ERROR
log4j.logger.freemarker.cache=ERROR
#SqlMap logging configuration...
#DEBUG < INFO < WARN < ERROR < FATAL#
log4j.logger.com.miri.boss=DEBUG
log4j.logger.com.ibatis=ERROR
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=ERROR
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=ERROR
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=ERROR
#log4j.logger.java.sql=INFO
log4j.logger.java.sql.Statement=ERROR
log4j.logger.java.sql.ResultSet=ERROR
log4j.logger.java.sql.PreparedStatement=ERROR
#json
log4j.org.apache.struts2=ERROR
log4j.logger.org.apache.struts2.json=ERROR
#ecside
log4j.logger.org.ecside.core.TableModelUtils=ERROR
# JOTM #
log4j.logger.org.objectweb.jotm=ERROR, Requests
log4j.additivity.org.objectweb.jotm=false
log4j.logger.org.objectweb.jotm.jta=ERROR, Requests
log4j.additivity.org.objectweb.jotm.jta=false
log4j.logger.org.objectweb.jotm.recovery=ERROR, Requests
log4j.additivity.org.objectweb.jotm.recovery=false
log4j.logger.org.objectweb.jotm.tests=ERROR, Requests
log4j.additivity.org.objectweb.jotm.tests=false
# CAROL #
log4j.logger.org.objectweb.carol=ERROR, Requests
log4j.additivity.org.objectweb.carol=false
log4j.logger.org.objectweb.carol.rmi=ERROR, Requests
log4j.additivity.org.objectweb.carol.rmi=false
log4j.logger.org.objectweb.carol.jndi=ERROR, Requests
log4j.additivity.org.objectweb.carol.jndi=false
1、批量的改变所有日志对象的日志级别:
//value日志级别eroor、info、debug等
public void test(String value){
final String sArg = LogManager.getRootLogger().getLevel().toString();
if (!sArg.equals(value))
{
//设置日志级别
final Level level = Level.toLevel(value);
//设置根日志级别
LogManager.getRootLogger().setLevel(level);
//获取配置文件中的所有log4j对象
final Enumeration<org.apache.log4j.Logger> logs = LogManager.getCurrentLoggers();
while (logs.hasMoreElements())
{
final org.apache.log4j.Logger logger = logs.nextElement();
//给log4j对象设置级别
logger.setLevel(level);
}
}
}
2、根据log4j对象的名称改变日志级别,名称将会和配置文件中的名称匹配,匹配上的对象设置日志级别。
//value日志级别eroor、info、debug等
public void test(String value){
final String sArg = LogManager.getRootLogger().getLevel().toString();
if (!sArg.equals(value))
{
final Level level = Level.toLevel(value);
LogManager.getRootLogger().setLevel(level);
final Enumeration<org.apache.log4j.Logger> logs = LogManager.getCurrentLoggers();
while (logs.hasMoreElements())
{
final org.apache.log4j.Logger logger = logs.nextElement();
final String loggerName = logger.getName();
// 匹配调整部分logger
if (loggerName.contains("java.sql") || loggerName.contains("com.miri.boss")
|| loggerName.contains("com.ibatis"))
{
logger.setLevel(level);
}
}
}
}
上面的匹配条件将会匹配到日志配置文件中的:
log4j.logger.com.miri.boss=DEBUG
log4j.logger.com.ibatis=ERROR
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=ERROR
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=ERROR
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=ERROR
#log4j.logger.java.sql=INFO
log4j.logger.java.sql.Statement=ERROR
log4j.logger.java.sql.ResultSet=ERROR
log4j.logger.java.sql.PreparedStatement=ERROR
分享到:
相关推荐
例如,你可以这样动态改变日志级别: ```java Logger logger = Logger.getLogger("com.example.myapp"); logger.setLevel(Level.WARN); ``` 这种方式无需重启应用,但需要在代码中进行修改。 3. **通过JMX...
2. **配置Log4j**:在项目的类路径下创建`log4j.properties`或`log4j.xml`配置文件,指定日志级别、输出目的地等。例如: ```properties # log4j.properties log4j.rootLogger=DEBUG, stdout log4j.appender....
7. **Configuration(配置)**:Log4j的配置通常在`log4j.properties`或`log4j.xml`文件中进行,可以动态地改变日志行为。 压缩包内的`log4j.jar`文件是Log4j的二进制库,包含了所有Log4j的类和方法,你需要将它...
- 动态性:可以在运行时改变日志级别和配置。 - 性能:日志处理效率高,对应用程序的性能影响小。 - 可扩展性:支持多种appenders和layouts,可适应各种日志需求。 5. **应用场景**: - 错误追踪:通过日志找出...
6. **日志级别动态调整**: 在运行时,可以通过API或者重新加载配置文件来改变日志级别。 总结,Log4j作为Java日志框架,提供了强大的日志管理能力,通过配置文件可以灵活调整日志输出级别、格式和目的地,同时支持...
slf4j-log4j12-1.7.x版本是SLF4J针对Log4j 1.2版本的绑定器,它使得应用可以使用SLF4J接口,但实际的日志输出通过Log4j进行。这个桥接器让项目能利用SLF4J的灵活性,同时使用Log4j的成熟实现。 在提供的文件名列表...
3. **动态配置**:通过Log4j Lookup和Configuration API,可以在运行时动态改变日志配置,无需重启应用程序。这对于监控和故障排查非常有用。 4. **插件架构**:Log4j 2采用插件架构,允许扩展输出格式、Appenders...
SLF4J的灵活性在于,开发者可以在不修改代码的情况下,通过替换绑定的实现库来改变日志系统。 **log4j2** log4j的后续版本,log4j2带来了许多改进,包括更好的性能、异步日志记录、动态配置以及更丰富的日志输出...
通过外部配置文件(通常是log4j.properties或log4j.xml),开发者可以轻松地改变日志行为,比如添加新的输出源,调整日志级别,或者定制日志格式。这种灵活性使得Log4j成为了一个强大的工具,尤其在调试、性能监控和...
Log4j是Apache软件基金会的一个项目,它提供了一个强大的、灵活的日志API,允许开发者控制日志信息的输出级别,以及将日志信息输出到不同的目的地,如控制台、文件、数据库等。Log4j的配置可以通过一个XML或...
虽然SLF4J不直接使用Log4j,但可以通过桥接器将SLF4J的调用转发到Log4j,这样可以利用Log4j的高级特性,如自定义日志级别、日志文件滚动、过滤器和布局模板等。不过,在Android中直接使用Log4j并不常见,因为它的...
你可以根据需求调整这些设置,比如添加更多的Appender,改变日志级别,或者定制日志格式。 总的来说,Log4j提供了一套灵活且强大的日志管理方案,而结合使用commons-logging可以进一步增强代码的可移植性和适应性。...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它的设计目的是为各种日志框架提供一个统一的接口,使得开发者可以在不改变代码的情况下切换不同的日志实现,比如从Log4j切换到Logback,或者...
- 分析日志级别的实现,理解如何设置和改变日志级别。 - 查看 Appender 和 Layout 的源码,了解它们如何处理和格式化日志信息。 - 学习配置文件的解析过程,理解 `PropertyConfigurator` 或 `DOMConfigurator` 如何...
Log4j由Logger(日志记录器)、Appender(输出端)、Layout(格式化器)和Level(日志级别)等核心组件构成。Logger负责生成日志事件,Appender决定这些事件如何被输出(如控制台、文件、数据库等),Layout则定义...
4. **Level**: 这是用来控制日志级别的对象,允许你设置哪些级别的日志信息会被记录。默认级别是WARN,但可以通过配置文件或代码改变。 5. **Filter**: 进一步细化控制日志输出,可以根据条件过滤日志事件。 配置...
API文档对于理解如何创建、配置和使用Log4j对象至关重要。 Log4j在Java生态中的重要性不仅体现在其强大的功能上,还在于其可扩展性和灵活性。它可以与各种日志管理和分析工具集成,如Logback和ELK(Elasticsearch、...
Log4j的配置文件是其灵活性的关键,通过修改配置文件,我们可以轻松地改变日志的行为。例如,通过设置不同的日志级别(DEBUG、INFO、WARN、ERROR、FATAL),可以控制在运行时记录哪些级别的日志信息。此外,还可以...
默认情况下,如果未配置日志级别,Log4j会使用Error级别,因此只会显示错误级别的日志。 要改变这种行为,我们需要配置Log4j。2.0版本不再支持以前的properties配置文件,而是使用XML或JSON格式。例如,我们可以...
5. **调试与优化**:根据实际需求调整配置,例如增加过滤规则,改变日志级别,调整输出目的地等。 Log4j 2.12.1版本相较于之前的版本,增强了性能和稳定性,引入了更多可配置选项,使得日志管理更加灵活。对于新手...