JDK1.4中已经提供java.util.logging包用于记录日志,功能和Log4j差不多,但是由于不需要配置额外的jar包,所以是个不错的选择。Log4j中是通过log4j.properties这个配置文件控制日志的输出,java logging中是通过logging.properties文件完成类似的功能。下面说说这个文件的用法。
Logging.properties文件位于JDK安装路径的 jre/lib/目录下,缺省内容如下(删除注释):
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. | handlers= java.util.logging.ConsoleHandler
.level= INFO
java.util.logging.FileHandler.pattern = %h/java%u.log java.util.logging.FileHandler.limit = 50000 java.util.logging.FileHandler.count = 1 java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
java.util.logging.ConsoleHandler.level = INFO java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter |
其中5-8行定义了一个handler,11-12行定义了一个handler。等1行,handlers,定义根处理器或者说是缺省的处理器。这里可以定义多个处理,这些处理器是同时起作用的。例如:既想通过控制台(console)输出,又想通过文件,可以按如下方式设置:
1. | handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler |
第5行指定了文件的输出位置及规则。
5. | java.util.logging.FileHandler.pattern = %h/java%u.log |
缺省的设置实在“user.home”(System.getProperties(“user.home”))属性对应的目录创建java0.log的日志文件。(具体的设置可以参见JDK,java.util.logging.FileHandler类的说明)。
通过上述设置就可以实现将日志输入到指定文件的要求了。但是有时候只是希望某些类的文件输出到制定,这样调试起来更清晰些,为了实现个要求还要再进行些设置。
5. | handlers= java.util.logging.ConsoleHandler #改回缺省情况下不从文件输出 |
| com.jason.logger.LoggerDemo.level = ALL com.jason.logger.LoggerDemo.handlers = java.util.logging.FileHandler |
“com.jason.logger.LoggerDemo”是“Logger”的名字,它要和代码中指定的Logger相匹配。
private static Logger log = Logger.getLogger(LoggerDemo.class.getName()); |