在进行讯息的记录时,依情节的不同,我们会设定不同等级的讯息输出,您可以透过操作 Logger 的几个方法来得到不同等级的讯息输出,例如:
package onlyfun.caterpillar; import java.util.logging.*; public class LoggingDemo { public static void main(String[] args) { Logger logger = Logger.getLogger("loggingTest"); logger.severe("严重讯息"); logger.warning("警示讯息"); logger.info("一般讯息"); logger.config("设定方面的讯息"); logger.fine("细微的讯息"); logger.finer("更细微的讯息"); logger.finest("最细微的讯息"); } }
执行结果:
2005/2/3 下午 07:10:43 onlyfun.caterpillar.LoggingDemo main 严重的: 严重讯息 2005/2/3 下午 07:10:43 onlyfun.caterpillar.LoggingDemo main 警告: 警示讯息 2005/2/3 下午 07:10:43 onlyfun.caterpillar.LoggingDemo main 信息: 一般讯息
依照不同的等级,您可以采用不同的讯息等级方法,程序中依程度高低撰写,注意到 config 以下的讯息并没有显示出来,这是因为 Logger 的预设等级是 INFO,比这个等级更低的讯息,Logger 并不会理会它。
Logger 的预设等级是定义在执行环境的属性文件logging.properties中,这个档案位于执行环境安装目录的lib目录下,部份内容如下:
handlers= java.util.logging.ConsoleHandler .level= INFO java.util.logging.ConsoleHandler.level = INFO
Logger 预设的 Handler 是 ConsolerHandler, 也就是将讯息输出至主控台,一个 Logger 可以维护多个 Handler,每个 Handler 可以有自己的讯息等级,在通过 Logger 的等级限制后,实际上还要再经过 Handler 的等级限制,所以上面的例子中您如果想要看到所有的讯息,则必须同时设定 Logger 与 ConsolerHandler 的等级,例如:
package onlyfun.caterpillar; import java.util.logging.*; public class LoggingDemo { public static void main(String[] args) { Logger logger = Logger.getLogger("loggingTest"); logger.setLevel(Level.ALL); ConsoleHandler consoleHandler = new ConsoleHandler(); consoleHandler.setLevel(Level.ALL); logger.addHandler(consoleHandler); logger.severe("严重讯息"); logger.warning("警示讯息"); logger.info("一般讯息"); logger.config("设定方面的讯息"); logger.fine("细微的讯息"); logger.finer("更细微的讯息"); logger.finest("最细微的讯息"); } }
执行结果:
2005/2/3 下午 07:22:59 onlyfun.caterpillar.LoggingDemo main 严重的: 严重讯息 2005/2/3 下午 07:22:59 onlyfun.caterpillar.LoggingDemo main 严重的: 严重讯息 2005/2/3 下午 07:22:59 onlyfun.caterpillar.LoggingDemo main 警告: 警示讯息 2005/2/3 下午 07:22:59 onlyfun.caterpillar.LoggingDemo main 警告: 警示讯息 2005/2/3 下午 07:22:59 onlyfun.caterpillar.LoggingDemo main 信息: 一般讯息 2005/2/3 下午 07:22:59 onlyfun.caterpillar.LoggingDemo main 信息: 一般讯息 2005/2/3 下午 07:22:59 onlyfun.caterpillar.LoggingDemo main 配置: 设定方面的讯息 2005/2/3 下午 07:22:59 onlyfun.caterpillar.LoggingDemo main 细致: 细微的讯息 2005/2/3 下午 07:22:59 onlyfun.caterpillar.LoggingDemo main 更细致: 更细微的讯息 2005/2/3 下午 07:22:59 onlyfun.caterpillar.LoggingDemo main 最细致: 最细微的讯息
Level.ALL
表示显示所有的讯息,如果您想要关闭所有的讯息,可以设定为Level.OFF。
Logger 的server()、warning()、info()等等的方法,实际上是个便捷的方法,您也可以直接使用log()方法并指定等级来执行相同的作用,例如下面这个程序的执行结果是一样的:
package onlyfun.caterpillar; import java.util.logging.*; public class LoggingDemo { public static void main(String[] args) { Logger logger = Logger.getLogger("loggingTest"); logger.setLevel(Level.ALL); ConsoleHandler consoleHandler = new ConsoleHandler(); consoleHandler.setLevel(Level.ALL); logger.addHandler(consoleHandler); logger.log(Level.SEVERE, "严重讯息"); logger.log(Level.WARNING, "警示讯息"); logger.log(Level.CONFIG, "一般讯息"); logger.log(Level.CONFIG, "设定方面的讯息"); logger.log(Level.FINE, "细微的讯息"); logger.log(Level.FINER, "更细微的讯息"); logger.log(Level.FINEST, "最细微的讯息"); } }