免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 955 | 回复: 0
打印 上一主题 下一主题

Java Logging API(三) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-28 16:29 |只看该作者 |倒序浏览

(四)、Level
Level对象定义了一组日志消息的级别,用于控制日志消息的输出。一个级别对应一个整型值。日志消息级别按照其整数值的大小排定优先级。在Logger对象中设定一个级别,则大于等于该级别的日志消息将会被传递到某个Handler对象进行输出处理。
J2SDK1.4的Java Logging框架中定义了以下消息级别:
级别名称
int值(Windows 2000环境)
OFF
2147483647
SEVERE
1000
WARNING
900
INFO
800
CONFIG
700
FINE
500
FINER
400
FINEST
300
ALL
-2147483648
                       表一
Level.OFF具有最高的级别。将Logger的Level级别设置成Level.OFF
让我们看看消息级别是怎样工作的:LoggingLevelTest.java
import java.util.logging.*;
public class LoggingLevelTest {
         public static void main(String args[]) {
                   //使用Logger的静态方法获得一个匿名Logger
                   Logger logger1 = Logger.getAnonymousLogger();
                   //设置Logger对象记录的最低日志消息级别
                   logger1.setLevel(Level.FINER);
                   //记录消息
                   logger1.severe("SEVERE级消息");
                   logger1.warning("WARNING级消息");
                   logger1.config("CONFIG级消息");
                   logger1.info("INFO级消息");
                   logger1.fine("FINE级消息");
                   logger1.finer("FINER级消息");
                   logger1.finest("FINEST级消息");
         }
}
                    实例3

运行结果:
2003-1-15 7:02:03 LoggingLevelTest main
服务器: SEVERE级消息
2003-1-15 7:02:04 LoggingLevelTest main
警告: WARNING级消息
2003-1-15 7:02:04 LoggingLevelTest main
配置: CONFIG级消息
2003-1-15 7:02:04 LoggingLevelTest main
信息: INFO级消息

可以看出,优先级低于INFO的日志消息不被记录。
Level的构造函数为protected便于程序员开发自己的消息级别类。
import java.util.logging.*;
//自定义消息级别
class myLevel extends Level{
//定义自己的消息级别SYSE
public static final Level SYSE = new myLevel("SYSE", Level.SEVERE.intValue()+10);
public myLevel(String ln,int v) {
super(ln,v);
         }
}
public class MyLevelTest {
         public static void main(String args[]) {
                   Logger logger1 = Logger.getAnonymousLogger();               
                   //设置消息级别
                   logger1.setLevel(myLevel.SYSE);
                   //记录消息
                   logger1.log(myLevel.SYSE,"SYSE消息");
                   logger1.severe("SVERE消息");
         }
}      
                                     实例4

运行结果:
                           
2003-1-15 15:40:04 MyLevelTest main
SYSE: SYSE消息

只有SYSE消息被记录,SVERE消息不被记录,因为自定义级别SYSE高于SEVERE.
(五)Formatter
Formatter负责对LogRecords进行格式化。每个记录处理器Handler同一个Formatter对象相关联。Formatter对象接收从Handler传来的LogRecord,将其格式化成字符串后返回给Handler进行输出。
Formatter是一个抽象类。
自定义扩展Formatter类。实例:MyFormatterTest.java
import java.util.Date;
import java.util.logging.*;

//创建每条日志记录以行的日志格式:
//时间空格>消息级别空格>消息ID空格>日志信息内容换行>
class MyFormatter extends Formatter {
        
         public String format(LogRecord rec) {
                   StringBuffer buf = new StringBuffer(1000);
        buf.append(new Date().toLocaleString()); //时间
        buf.append(' ');
        buf.append(rec.getLevel()); //消息级别
        buf.append(' ');
        buf.append(rec.getMillis()); //作为消息ID
        buf.append(' ');
        buf.append(formatMessage(rec));//格式化日志记录数据
        buf.append('\n');    //换行
        return buf.toString();
    }      
}

public class MyFormatterTest {
public static void main(String args[]){
         //创建记录器
Logger log1 = Logger.getLogger("MyLogger");
//创建记录处理器
Handler mh = new ConsoleHandler();
//为记录处理器设置Formatter
         mh.setFormatter(new MyFormatter());
         //为记录器添加记录处理器
log1.addHandler(mh);
//禁止消息处理将日志消息上传给父级处理器
log1.setUseParentHandlers(false);
         //记录消息
         log1.severe("消息1");
         log1.warning("消息2");
         log1.info("消息3");
         log1.config("消息4");
}
}
                   实例5
程序运行结果:

2003-1-15 16:59:38 SEVERE 1042621178968 消息1
2003-1-15 16:59:40 WARNING 1042621178985 消息2
2003-1-15 16:59:41 INFO 1042621179105 消息3



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/31901/showart_288197.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP