今天尝试使用JDK自带的日志模块打印日志,过程如下:
使用类:
public class LoginTest { Logger logger = Logger.getLogger(this.getClass().getName()); @Before public void setup() throws SecurityException, IOException { logger.info("hello logger"); } ... }
配置文件(logging.properties):
handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
.level= INFO
java.util.logging.FileHandler.pattern = ./log/myapp.%g.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 5
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
运行方法:
$ java -Djava.util.logging.config.file=./conf/logging.properties LoginTest
使用虚拟机参数指定配置文件的位置,这是与其他log框架(e.g. Log4j, logback)用法不同的地方;
另外:上面将日志文件放在log文件夹里,经试验发现,log文件夹 必须预先创建好 ,否则日志文件将不能生成!
也可以在Java代码中指定FileHandler的特性:
FileHandler handler = new FileHandler("myapp.log", 1024, 5, true); handler.setFormatter(new SimpleFormatter()); logger.addHandler(handler); logger.info(server.response());
但一般情况下配置文件灵活性更好;
FileHandler.pattern中的特殊符号(e.g. %h, %g, etc)含义可参看 JDK6文档 中FileHandler类的说明;