标签:
java.util.logging.Logger不是什么新鲜东西了,1.4就有了,可是因为log4j的存在,这个logger一直沉默着,其实在一些测试性的代码中,jdk自带的logger比log4j更方便。
一、创建Logger对象
public class TestLogger { public static void main(String[] args) { 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); log.info("aaa"); log2.info("bbb"); log2.fine("fine"); } }
true 2009-7-28 20:00:30 TestLogger main 信息: aaa Process finished with exit code 0
当注释掉 log2.setLevel(Level.WARNING);
输出结果:
true 2009-7-28 20:02:02 TestLogger main 信息: aaa 2009-7-28 20:02:02 TestLogger main 信息: bbb Process finished with exit code 0
从这里可以看出,logger的名字是有层级关系的。这和log4j的控制方式完全一致。
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 class TestLogger { public static void main(String[] args) throws IOException { 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 =new ConsoleHandler(); consoleHandler.setLevel(Level.ALL); log.addHandler(consoleHandler); FileHandler fileHandler = new FileHandler("C:/testlog%g.log"); fileHandler.setLevel(Level.INFO); log.addHandler(fileHandler); log.info("aaa"); log2.info("bbb"); log2.fine("fine"); } }
输出结果:
true 2009-7-28 20:36:14 TestLogger main 信息: aaa 2009-7-28 20:36:14 TestLogger main 信息: aaa 2009-7-28 20:36:14 TestLogger main 信息: bbb 2009-7-28 20:36:14 TestLogger main 信息: bbb Process finished with exit code 0
查看C盘:
java.util.logging.Formatter
java.util.logging.SimpleFormatter
java.util.logging.XMLFormatter
看这个例子就明白了:
public class TestLogger { public static void main(String[] args) throws IOException { 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 = new ConsoleHandler(); consoleHandler.setLevel(Level.ALL); log.addHandler(consoleHandler); FileHandler fileHandler = new FileHandler("C:/testlog%g.log"); fileHandler.setLevel(Level.INFO); fileHandler.setFormatter(new MyLogHander()); log.addHandler(fileHandler); log.info("aaa"); log2.info("bbb"); log2.fine("fine"); } } class MyLogHander extends Formatter { @Override public String format(LogRecord record) { return record.getLevel() + ":" + record.getMessage()+"\n"; } }
输出:
在控制和C盘输出的文件如图
到此,Java自带的Logger内容就没了。
感觉格式很不爽。自定义的格式很烂。
标签:
原文地址:http://www.cnblogs.com/Crow00/p/4494283.html