本文讲Java内置的java.util.logging软件包中的 api。主要解释怎样使用该api添加logging到你的application中,怎样加配置它等。可是本文不谈你应该把什么东西写到日志中。html
Note :本文谈到的api是Java 6中的。不涉及其余流行的Java logging api(好比Log4J, SLF4J, Apache Commons Logging, LogBack 等)。它只关注Java内置的API。java
若是你可以选择你本身的logging api,你也许能够选择上面提到的流行api。可是,若是你像我同样,正在开发Google APP Engine上的web应用,那么你不得不使用java.util.logging。web
下图是Java Logging API工做的概况示意图:api
全部的logging都是经过一个Loger 实例产生的,Logger收集数据,保存到LogRecord。LogRecord转发到Handler。Handler来决定怎么处理这些LogRecord。例如,LogRecord能够写到disk,或者经过网络发送到一个监控系统。网络
Logger和Handler均可以使用Filter来筛选LogRecord,来决定是否转发。 架构
一般的作法是,在须要添加日志的类中建立一个 static final的Logger 实例,全部该类的对象共享该实例。例子以下:app
public class LoggingExamples { private static final Logger logger = Logger.getLogger(LoggingExamples.class.getName()); // 一般把该类的全名做为Logger的名字
public void doIt() {
logger.entering(getClass().getName(), "doIt");
try{
//... something that can throw an exception
} catch (Exception e) {
logger.log(Level.SEVERE, "Error doing XYZ", e);
}
logger.exiting(getClass().getName(), "doIt");
}
}
为了产生一条message,你能够调用如下方法:函数
//log 组产生指定level上的message
log (Level level, String message);
log (Level level, String message, Object param1); //对象信息被插入到message中
log (Level level, String message, Object[] params); //示例: logger.log(Level.SEVERE, "Hello logging: {0}, {1}", new Object[] {"P1", "P2"}); 注意传参数的格式
log (Level level, String message, Throwable t);
log (LogRecord record);
//在log()的基础上增长了sourceClass和sourceMethod俩个参数,用来讲明这条message产生自那个类的那个方法。
logp (Level level, String sourceClass, String sourceMethod, String msg);
logp (Level level, String sourceClass, String sourceMethod, String msg,
Object param1);
logp (Level level, String sourceClass, String sourceMethod, String msg,
Object[] params);
logp (Level level, String sourceClass, String sourceMethod, String msg,
Throwable t);
//在logp()基础上增长了bundle。Resource bundle是一些键值对,主要用于国际化
logrb(Level level, String sourceClass, String sourceMethod,
String bundle, String msg);
logrb(Level level, String sourceClass, String sourceMethod,
String bundle, String msg, Object param1);
logrb(Level level, String sourceClass, String sourceMethod,
String bundle, String msg, Object[] params);
logrb(Level level, String sourceClass, String sourceMethod,
String bundle, String msg, Throwable t);
entering(String sourceClass, String sourceMethod);
entering(String sourceClass, String sourceMethod, Object param1);
entering(String sourceClass, String sourceMethod, Object[] params);
exiting (String sourceClass, String sourceMethod);
exiting (String sourceClass, String sourceMethod, Object result);
fine (String message);
finer (String message);
finest (String message);
config (String message);
info (String message);
warning (String message);
severe (String message);
throwing(String sourceClass, String sourceMethod, Throwable t);
//几个重要的函数
void addHandler(Handler handler) Add a log Handler to receive logging messages. 每个Handler能够调用setFormatter函数设置输出格式
void setFilter(Filter newFilter) Set a filter to control output on this Logger.
void setLevel(Level newLevel) Set the log level specifying which message levels will be logged by this logger.
原文地址:在这里this