文章源地址:
http://www.186info.com/?p=61
log4j自定义日志等级,步骤如下
1.继承logj的level类,定义一个自己的日志级别:
public class TestLevel extends Level {
public TestLevel(int level, String levelStr, int syslogEquivalent) {
super(level, levelStr, syslogEquivalent);
}
}
2.继承Filter类,定义一个自己的filter:
public class MyLogFiter extends Filter {
/**
* Do we return ACCEPT when a match occurs. Default is
* <code>false</code>, so that later filters get run by default
*/
boolean acceptOnMatch = false;
int levelMin;
int levelMax;
/**
* Return the decision of this filter.
*/
@Override
public int decide(LoggingEvent event) {
int inputLevel = event.getLevel().toInt();
if (inputLevel >= levelMin && inputLevel <= levelMax) {
return Filter.ACCEPT;
}
return Filter.DENY;
}
/**
* Get the value of the <code>LevelMax</code> option.
*/
public int getLevelMax() {
return levelMax;
}
/**
* Get the value of the <code>LevelMin</code> option.
*/
public int getLevelMin() {
return levelMin;
}
/**
* Get the value of the <code>AcceptOnMatch</code> option.
*/
public boolean getAcceptOnMatch() {
return acceptOnMatch;
}
/**
* Set the <code>LevelMax</code> option.
*/
public void setLevelMax(int levelMax) {
this.levelMax = levelMax;
}
/**
* Set the <code>LevelMin</code> option.
*/
public void setLevelMin(int levelMin) {
this.levelMin = levelMin;
}
/**
* Set the <code>AcceptOnMatch</code> option.
*/
public void setAcceptOnMatch(boolean acceptOnMatch) {
this.acceptOnMatch = acceptOnMatch;
}
}
3.在不侵入log4j源代码的情况下,对log4j的logger输出进行封装,并且添加自己定义的级别的输出方法:
public class Logger {
private final static int priority = 40100;
private final org.apache.log4j.Logger logger;
private static final String FQCN;
//以下为自定义的日志级别
public static final Level PAY_LEVEL = new TestLevel(priority, “TEST”, SyslogAppender.LOG_LOCAL0);
static {
FQCN = Logger.class.getName();
}
private Logger(Class<?> clazz) {
logger = org.apache.log4j.Logger.getLogger(clazz);
}
private Logger() { http://192.168.226.114:8080/tfs/JDRD/RD/_workitems
logger = org.apache.log4j.Logger.getRootLogger();
}
public static Logger getLogger(Class<?> clazz) {
return new Logger(clazz);
}
public static Logger getRootLogger() {
return new Logger();
}
public void test(Object message) {
forcedLog(logger, PAY_LEVEL, message);
}
public void test(Object message, Throwable t) {
forcedLog(logger, PAY_LEVEL, message, t);
}
private static void forcedLog(org.apache.log4j.Logger logger, Level level, Object message) {
logger.callAppenders(new LoggingEvent(FQCN, logger, level, message, null));
}
private static void forcedLog(org.apache.log4j.Logger logger, Level level, Object message, Throwable t) {
logger.callAppenders(new LoggingEvent(FQCN, logger, level, message, t));
}
}
4.修改log4j的xml配置文件,添加自定义的appender:
<appender name=”TEST”>
<param name=”File” value=”/var/Test.log”/>
<param name=”Append” value=”true”/>
<param name=”DatePattern” value=”‘.’yyyy-MM-dd-HH”/>
<param name=”BufferedIO” value=”true”/>
<!– 8K为一个写单元 –>
<param name=”BufferSize” value=”8192″/>
<layout>
<param name=”ConversionPattern” value=”%d{yyyy-MM-dd HH:mm:ss}\t%F\t%L\t%M\t%m%n”/>
</layout>
<filter class=”MyLogFiter”>
<param name=”LevelMin” value=”40100″/>
<param name=”LevelMax” value=”40100″/>
</filter>
</appender>
5.在需要输出日志的地方使用封装的logger输出方法即可:
logger.test(“hahaha,test”);
分享到:
相关推荐
在深入探讨Log4j日志等级之前,我们首先需要了解Log4j是什么。Log4j是Apache的一个开源项目,用于Java应用程序的日志记录。它提供了一种高度灵活且功能强大的日志解决方案,允许开发者和系统管理员自定义日志级别、...
7. **自定义日志等级**:除了预设的日志级别,Log4j还允许开发者自定义新的日志级别,以满足特定场景的需求。 8. **性能优化**:Log4j通过延迟初始化和日志门面模式,可以在不影响性能的情况下,实现高效的日志记录...
这个布局类能够将每一条日志事件转换为JSON对象,包含了如日志等级、时间戳、logger名、线程名、异常堆栈跟踪等关键信息。 **JSONLayout配置** 在Log4j1的配置文件(通常是log4j.properties或log4j.xml)中,我们...
8. **自定义日志等级和日志事件**:开发者可以通过继承`Priority`类或使用`Level`枚举来创建自定义的日志级别,也可以创建自定义的日志事件类。 9. **性能**:Log4j API设计得非常高效,只有在日志级别匹配时才会...
Log4j是Java领域广泛应用的日志框架,因其强大的功能和灵活性而受到广大开发者的青睐。这篇博客将深入探讨如何使用Log4j进行日志操作。** 首先,我们需要理解Log4j的基本组件。Log4j由三部分组成:配置器...
Log4j还提供了更高级的功能,如异步日志记录、过滤器、自定义日志等级和MDC(Mapped Diagnostic Context),用于关联特定上下文信息。通过这些特性,Log4j可以满足复杂日志需求,帮助开发者构建健壮的系统。 总的来...
"Log4j" 标签明确了这个压缩包与Log4j框架有关,Log4j是一个强大的、可配置的日志工具,它提供了多种级别的日志记录(如DEBUG, INFO, WARN, ERROR, FATAL),并允许开发者自定义日志输出的位置、格式和级别。...
Log4j2的配置文件通常是XML、JSON或YAML格式,允许用户自定义日志输出的行为。例如,以下是一个简单的XML配置示例: ```xml [%t] %-5level %logger{36} - %msg%n"/> ``` 在这个配置中,创建...
它允许开发者自定义日志级别、输出格式、存储方式等,极大地提高了日志管理的灵活性和可扩展性。log4j 1.2.15是该系列的一个稳定版本,虽然现在已有更新的log4j 2.x版本,但1.2.x系列仍然被许多遗留系统所采用。 二...
Log4j 是 Apache 的一个开源项目,通过使用 Log4j,开发者能够控制日志信息的输出等级及去向,从而更加灵活地处理日志信息。它具有强大的功能,简单的配置,并且能够支持多种输出目标,包括控制台、文件等。 #### ...
1. **日志级别控制**:Log4j允许用户定义日志消息的严重性等级,如DEBUG、INFO、WARN、ERROR、FATAL等,这使得开发者能够在不同的环境(如开发、测试或生产)中调整日志的详细程度,从而优化性能并减少不必要的日志...
4. **日志等级管理** 通过配置文件,你可以控制不同级别的日志输出。在开发阶段,通常设置为DEBUG级别以获取所有日志信息;在生产环境中,通常降低为INFO或WARN级别,以减少不必要的日志输出,提高性能。 5. **...
6. **日志等级和过滤** Log4j支持多种日志级别,按照严重程度从低到高为:TRACE 。开发者可以根据需求调整日志级别,以便在生产环境中只记录关键信息,而在开发和测试阶段记录更多信息。 7. **性能考虑** 虽然Log...
- **自定义日志格式**:通过定义Layout,可以定制日志的输出格式,例如自定义日期格式、增加线程信息等。 - **日志分等级输出**:1.2.4版本可以配置不同的Appender处理不同级别的日志,例如,DEBUG级别的日志可以...
5. **自定义日志等级**:可以定义自己的日志级别。 6. **MDC(Mapped Diagnostic Context)与NDC(Nested Diagnostic Context)**:用于存储线程相关的诊断信息,方便排查问题。 ### 五、Log4j与其他日志框架比较 ...
它允许开发者根据需求配置日志等级,并灵活选择日志信息的输出方式。Log4j 的核心组件包括 Logger、Appender 和 Layout。 #### 二、Log4j 基本使用流程 ##### 1. 创建 Logger 实例 创建 Logger 实例是使用 Log4j ...
2. **Log4J.pdf**:这份文档可能进一步深入到Log4j的高级特性,如自定义日志等级、过滤器、MDC(Mapped Diagnostic Context)和NDC(Nested Diagnostic Context),用于跟踪线程相关的诊断信息。此外,还可能包含...
Log4j是Apache的一个开源项目,它为Java应用程序提供了一个灵活的日志系统。这个系统能够让你控制日志信息的输出地方、输出格式以及输出级别,还可以进行定位跟踪,帮助开发者调试程序,提升软件的可维护性和稳定性...
Log4j是Apache的一个开源项目,用于实现日志功能,被广泛应用于各种基于Java的应用系统中。它提供了一个非常强大的框架来定制日志信息的生成方式,允许开发人员根据需要调整日志信息的输出等级、格式以及目的地等。...
#### 四、Log4j的使用 在代码中使用Log4j非常简单,只需要通过`LogFactory.getLog()`方法获取对应的Logger实例即可。例如: ```java protected final Log log = LogFactory.getLog(getClass()); if (log....