logging是Java里面自带的日志工具,由于是自带的,不需要导入第三方库,直接import java.util.logging.Logger即可。虽然功能较简单,而且没有查询功能,但是日常用用应该足够了。
logging定义了日志的7个等级:
SEVERE
WARNING
INFO
CONFIG
FINE
FINER
FINEST
此外,OFF,用来关闭日志;ALL,用来开启所有级别
这些等级主要是用来区分日志的重要性的,举个例子,查看一下Level.INFO的javadoc:
上面说,INFO级别只能用于对终端用户和系统管理员有意义的相当重要的消息。但是,如果只是单纯的使用logging作记录用,区别不大。默认等级是INFO级别,也就是说以下等级的日志都不会输出,需要使用Logger.setLevel(Level.XXX)来调节这个级别。
- Logger的获取
获取一个logger的方法声明是
public static Logger getLogger(String name);
在其说明中这样写道“如果已使用给定名称创建了logger,则返回该logger。否则将创建一个新的logger。”,因此,我们一般使用getLogger(类名.class.getName()),这样不会重复获取。
- Logger的输出
使用log.log(Level.INFO,“message”),或者log.info(“mesage”)来输出,默认输出到控制台上,输出结果如下:
包含了时间、类名、日志信息。如果需要取消控制台输出,使用log.setUseParentHandlers(false)进行关闭,它取消了其parent handler,取而代之,假如我们需要将日志写进文件里,则需要使用FileHandler。
FileHandler fh = new FileHandler("file_path", false);
其中,第一个参数是日志文件路径,第二个参数表示是否进行覆盖写入,若选了true,则每次向相同的文件末尾追加写入。使用记事本打开结果如下,看起来很凌乱。
如果我们需要规范其格式,则需要使用Formatter,创建匿名类并重写其format方法:
fh.setFormatter(new Formatter() {
@Override
public String format(LogRecord record) {
return "日志记录:" + record.getMessage() + "\r\n";
}
});
这样输出结果就变成了:
目前掌握的关于logger的知识就是这样,在这里进行记录