我尽量不浪费大家时间,但有时真的找不到头绪。谢谢
请问下面例子中的默认Handler在那里,我如何操作和设置它?
******************************************************************************
import java.util.logging.*;public class TestLogging {
//set up a logger
static Logger testLog = Logger.getLogger("Fluffycat.TestLog"); public static void main(String[] args) {
testLog.setLevel(Level.FINEST);
//testLog.setFilter(new MyFilter());
ConsoleHandler myHandler = new ConsoleHandler();
myHandler.setFilter(new MyFilter());
try{
FileHandler myFileHandler = new FileHandler("TestLogging.man.log");
myFileHandler.setFormatter(new SimpleFormatter());
testLog.addHandler(myHandler);
testLog.addHandler(myFileHandler);
}catch(Exception e){};
//test a warning log
testLog.warning("sample warning");
//test all priority levels to lowest
//default will only show SEVERE, WARNING, and INFO on your console
testLog.log(Level.SEVERE, "severe log");
testLog.log(Level.WARNING, "warning log");
testLog.log(Level.INFO, "info log");
testLog.log(Level.CONFIG, "config log");
testLog.log(Level.FINE, "fine log");
testLog.log(Level.FINER, "finer log");
testLog.log(Level.FINEST, "finest log");
testLog.log(Level.ALL, "all log");
testLog.finest("finest");
}
}class MyFilter implements Filter{
public boolean isLoggable(LogRecord record){
return true;
}
}
*************************************************************************
输出如下:
D:\java>java TestLogging
2005-3-8 20:52:11 TestLogging main
警告: sample warning
2005-3-8 20:52:11 TestLogging main
警告: sample warning
2005-3-8 20:52:11 TestLogging main
严重: severe log
2005-3-8 20:52:11 TestLogging main
严重: severe log
2005-3-8 20:52:11 TestLogging main
警告: warning log
2005-3-8 20:52:11 TestLogging main
警告: warning log
2005-3-8 20:52:11 TestLogging main
信息: info log
2005-3-8 20:52:11 TestLogging main
信息: info log
///////////////////////////////////////////////////////////////////////////////
TestLogging.man.log文件内容如下:
2005-3-8 21:23:59 TestLogging main
警告: sample warning
2005-3-8 21:24:00 TestLogging main
严重: severe log
2005-3-8 21:24:00 TestLogging main
警告: warning log
2005-3-8 21:24:00 TestLogging main
信息: info log
2005-3-8 21:24:00 TestLogging main
配置: config log
2005-3-8 21:24:00 TestLogging main
良好: fine log
2005-3-8 21:24:00 TestLogging main
较好: finer log
2005-3-8 21:24:00 TestLogging main
最好: finest log
2005-3-8 21:24:00 TestLogging main
最好: finest**************************************************************************
问题1:
我问这个问题的原因正如上面看到的,有一个我看不到的默认Handler在处理,以至所有输出信息变成两行。我希望操作和设置这个默认Handler。请问如何做到。
***************************************************************************
请本着认真负责的态度有序的回答,谢谢。
请问下面例子中的默认Handler在那里,我如何操作和设置它?
******************************************************************************
import java.util.logging.*;public class TestLogging {
//set up a logger
static Logger testLog = Logger.getLogger("Fluffycat.TestLog"); public static void main(String[] args) {
testLog.setLevel(Level.FINEST);
//testLog.setFilter(new MyFilter());
ConsoleHandler myHandler = new ConsoleHandler();
myHandler.setFilter(new MyFilter());
try{
FileHandler myFileHandler = new FileHandler("TestLogging.man.log");
myFileHandler.setFormatter(new SimpleFormatter());
testLog.addHandler(myHandler);
testLog.addHandler(myFileHandler);
}catch(Exception e){};
//test a warning log
testLog.warning("sample warning");
//test all priority levels to lowest
//default will only show SEVERE, WARNING, and INFO on your console
testLog.log(Level.SEVERE, "severe log");
testLog.log(Level.WARNING, "warning log");
testLog.log(Level.INFO, "info log");
testLog.log(Level.CONFIG, "config log");
testLog.log(Level.FINE, "fine log");
testLog.log(Level.FINER, "finer log");
testLog.log(Level.FINEST, "finest log");
testLog.log(Level.ALL, "all log");
testLog.finest("finest");
}
}class MyFilter implements Filter{
public boolean isLoggable(LogRecord record){
return true;
}
}
*************************************************************************
输出如下:
D:\java>java TestLogging
2005-3-8 20:52:11 TestLogging main
警告: sample warning
2005-3-8 20:52:11 TestLogging main
警告: sample warning
2005-3-8 20:52:11 TestLogging main
严重: severe log
2005-3-8 20:52:11 TestLogging main
严重: severe log
2005-3-8 20:52:11 TestLogging main
警告: warning log
2005-3-8 20:52:11 TestLogging main
警告: warning log
2005-3-8 20:52:11 TestLogging main
信息: info log
2005-3-8 20:52:11 TestLogging main
信息: info log
///////////////////////////////////////////////////////////////////////////////
TestLogging.man.log文件内容如下:
2005-3-8 21:23:59 TestLogging main
警告: sample warning
2005-3-8 21:24:00 TestLogging main
严重: severe log
2005-3-8 21:24:00 TestLogging main
警告: warning log
2005-3-8 21:24:00 TestLogging main
信息: info log
2005-3-8 21:24:00 TestLogging main
配置: config log
2005-3-8 21:24:00 TestLogging main
良好: fine log
2005-3-8 21:24:00 TestLogging main
较好: finer log
2005-3-8 21:24:00 TestLogging main
最好: finest log
2005-3-8 21:24:00 TestLogging main
最好: finest**************************************************************************
问题1:
我问这个问题的原因正如上面看到的,有一个我看不到的默认Handler在处理,以至所有输出信息变成两行。我希望操作和设置这个默认Handler。请问如何做到。
***************************************************************************
请本着认真负责的态度有序的回答,谢谢。
有一个logging.properties文件,
其中定义了默认的handler:
handlers= java.util.logging.ConsoleHandler所以你程序中加入的consolehandler和默认handler重复了。就是这个原因。
这个文件在sdk\jre\lib目录下