java.util.logging.Handler
java.util.logging.MemoryHandler
java.util.logging.StreamHandler
java.util.logging.ConsoleHandler
java.util.logging.FileHandler
java.util.logging.SocketHandler
public classTestLogger {public static void main(String[] args) throwsIOException {
Logger log= Logger.getLogger("lavasoft");
log.setLevel(Level.INFO);
Logger log1= Logger.getLogger("lavasoft");
System.out.println(log==log1); //true
Logger log2 = Logger.getLogger("lavasoft.blog");//log2.setLevel(Level.WARNING);
//控制台控制器ConsoleHandler consoleHandler=newConsoleHandler();
consoleHandler.setLevel(Level.ALL);
log.addHandler(consoleHandler);
//文件控制器
FileHandler fileHandler= new FileHandler("F:/testDir/8888g.log");
fileHandler.setLevel(Level.INFO);
log.addHandler(fileHandler);
log.info("aaa");
log2.info("bbb");
log2.fine("fine");
}
}
输出结果:true
2009-7-28 20:36:14TestLogger main
信息: aaa2009-7-28 20:36:14TestLogger main
信息: aaa2009-7-28 20:36:14TestLogger main
信息: bbb2009-7-28 20:36:14TestLogger main
信息: bbb
查看F:/testDir/8888g.log:
五、Logger的Formatter
Formatter 为格式化 LogRecords 提供支持。
一般来说,每个日志记录 Handler 都有关联的 Formatter。Formatter 接受 LogRecord,并将它转换为一个字符串。
有些 formatter(如 XMLFormatter)需要围绕一组格式化记录来包装头部和尾部字符串。可以使用 getHeader 和 getTail 方法来获得这些字符串。
LogRecord 对象用于在日志框架和单个日志 Handler 之间传递日志请求。
LogRecord(Level level, String msg)
用给定级别和消息值构造 LogRecord。
java.util.logging.Formatter
java.util.logging.SimpleFormatter
java.util.logging.XMLFormatter
public static voidmain(String[] args) {try{
FileHandler fileHandler= new FileHandler("F:/testDir/8888g.log");
fileHandler.setLevel(Level.INFO);
fileHandler.setFormatter(newFormatter() {//定义一个匿名类
@OverridepublicString format(LogRecord record) {return record.getLevel() + ":" + record.getMessage() + "\n";
}
});
logger.addHandler(fileHandler);
logger.info("测试");
}catch(SecurityException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}