编写一个基于日志信息的日志过滤器

翻译|其它|编辑:郝浩|2004-07-28 10:41:00.000|阅读 2513 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


Java日志API提供以日志级形式对输出进行过滤的内嵌方法。这个API也支持过滤器的概念。可以在句柄或者日志中加入java.util.logging.Filter。一个过滤器就是一个由开发者提供的具有行为能力的类。

下面给出了一个例子,告诉大家怎么编写一个基于从日志信息中查找到的文本对日志记录进行过滤的日志过滤器。这个过滤器叫做TextFilter,他只有一个属性:the text to filter on。在运行时间内可以用一般的日志配置方法对其进行配置。

必须要执行过滤器界面后才能开始。由于只有一种方法,那就是boolean isLoggable(LogRecord记录),所以java.util.logging.Filter的界面非常简单:

package tips;

import java.util.logging.LogManager;
import java.util.logging.LogRecord;
import java.util.logging.Filter;

public class TextFilter implements Filter {
private String text;
public boolean isLoggable(LogRecord record) {
if (record.getMessage().indexOf(this.text) != -1) {
return true;
}
else {
return false;
}



这一段同时也定义了用于过滤记录的文本性质。剩下我们所要做的就是准备进行配置了。为了减少配置的复杂度,过滤器采用ava.util.logging.LogManager中的getProperty 方法。因为过滤器用的是LogManager,所以所有的性质都可以直接从日志性质文件中读取。这些配置将被装载到过滤器构造器中。

public TextFilter() {
String className = TextFilter.class.getName();

this.text =
LogManager.getLogManager().getProperty(className + ".text");
}
...

现在需要将过滤器添加到句柄或是日志中,并且需要设置过滤的正文。这里有一个属性文件——tip-log.properties,这个文件是用来配置日志的:

# tip-log.properties
handlers=java.util.logging.ConsoleHandler
.level=FINEST
java.util.logging.ConsoleHandler.level = FINEST
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

首先,通过在属性文件中加入下面这条代码,从而对征文性质进行设置,加入的代码如下:

tips.TextFilter.text=dave

为了保持简单性,这个过滤器将被添加到一个定义了的句柄中——ConsoleHandler:

java.util.logging.ConsoleHandler.filter = tips.TextFilter 

下面是一个为过滤器提供日志选项的简单类的声明:

package tips;

import java.util.logging.Logger;

public class LogHandlerTip {
private static Logger log = Logger.getLogger("tips.LogHandlerTip");

public static void main(String args[]) {
log.finest("the finest message");
log.finer("finer message");
log.fine("a fine message");
log.config("some configuration message");
log.config("dave is great");
log.info("a little bit of information");
log.warning("a warning message");
log.severe("a severe message");
}


当所有的都通过了编译之后,用下面这个命令进行测试:

java -Djava.util.logging.config.file=tip-log.properties tips.LogHandlerTip 

在命令行中设定系统工具java.util.logging.config.file,从而控制日志框架结构轮换的使用日志性质文件。运行结果输出如下:

Apr 7, 2003 6:41:54 PM tips.LogHandlerTip main
CONFIG: dave is great.

正如你所看到的,编写一个过滤器其实非常的简单。剩下的其余所有工作就只是配置了。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP