每个初学者都很熟悉在有问题的代码中使用 System.out.println 方法在控制台打印消息,来帮助观察程序运行的操作过程。如果你使用 System.out.println 方法,一旦发现问题的根源,就要将这些语句从代码中删去。如果接下来又出现了问题,就需要再插入几个调用 System.out.println 方法的语句,如此反复,增加了工作量。
日志用来记录程序的运行轨迹,方便查找关键信息,也方便快 速定位解决问题。下面介绍 Java 自带的日志工具类 java.util.logging 的使用。
如果要生成简单的日志记录,可以使用全局日志记录器并调用其 info 方法,代码如下:
Logger.getGlobal().info("打印信息");
JDK Logging 把日志分为如下表 7 个级别,等级依次降低。
级别 | SEVERE | WARNING | INFO | CONFIG | FINE | FINER | FINEST |
---|---|---|---|---|---|---|---|
调用方法 | severe() | warning() | info() | config() | fine() | finer() | finest() |
含义 | 严重 | 警告 | 信息 | 配置 | 良好 | 较好 | 最好 |
Logger 的默认级别是 INFO,比 INFO 级别低的日志将不显示。Logger 的默认级别定义在 jre 安装目录的 lib 下面。
# Limit the message that are printed on the console to INFO and above.
java.util.logging.ConsoleHandler.level = INFO
所以在默认情况下,日志只显示前三个级别,对于所有的级别有下面几种记录方法:
logger.warning(message);
logger.fine(message);
同时,还可以使用 log 方法指定级别,例如:
logger.log(Level.FINE, message);
例 1
public class Test { private static Logger log = Logger.getLogger(Test.class.toString()); public static void main(String[] args) { // 级别依次升高,后面的日志级别会屏蔽之前的级别 log.finest("finest"); log.finer("finer"); log.fine("fine"); log.config("config"); log.info("info"); log.warning("warning"); log.severe("server"); }}
输出结果为:
十一月 27, 2019 5:13:05 下午 Test.Test main
信息: info
十一月 27, 2019 5:13:05 下午 Test.Test main
警告: warning
十一月 27, 2019 5:13:05 下午 Test.Test main
严重: server
可以使用 setLevel 方法设置级别,例如logger.setLevel(Level.FINE);可以将 FINE 和更高级别的都记录下来。另外,还可以使用 Level.ALL 开启所有级别的记录,或者使用 Level.OFF 关闭所有级别的记录。
注意:如果将记录级别设计为 INFO 或者更低,则需要修改日志处理器的配置。默认的日志处理器不会处理低于 INFO 级别的信息。
修改日志管理器配置
可以通过编辑配置文件来修改日志系统的各种属性。在默认情况下,配置文件存在于 jre 安装目录下“jre/lib/logging.properties”。要想使用另一个配置文件,就要将 java.util.logging.config.file 特性设置为配置文件的存储位置,并用下列命令启动应用程序。
java -Djava.util.logging.config.file = configFile MainClass
日志管理器在 JVM 启动过程中初始化,这在 main 执行之前完成。如果在 main 中调用System.setProperty("java.util.logging.config.file",file),也会调用LogManager.readConfiguration()来重新初始化日志管理器。
要想修改默认的日志记录级别,就需要编辑配置文件,并修改以下命令行。
.level=INFO
可以通过添加以下内容来指定自己的日志记录级别
Test.Test.level=FINE
也就是说,在日志记录器名后面添加后缀 .level。
在稍后可以看到,日志记录并不将消息发送到控制台上,这是处理器的任务。另外,处理器也有级别。要想在控制台上看到 FINE 级别的消息,就需要进行下列设置。
java.util.logging.ConsoleHandler.level=FINE
注意:在日志管理器配置的属性设置不是系统属性,因此,用-Dcom.mycompany.myapp.level=FINE启动应用程序不会对日志记录器产生任何影响。
上一篇:Java字符编码详细介绍
下一篇: 没有了
一级建造师二级建造师消防工程师造价工程师土建职称房地产经纪人公路检测工程师建筑八大员注册建筑师二级造价师监理工程师咨询工程师房地产估价师 城乡规划师结构工程师岩土工程师安全工程师设备监理师环境影响评价土地登记代理公路造价师公路监理师化工工程师暖通工程师给排水工程师计量工程师
执业药师执业医师卫生资格考试卫生高级职称护士资格证初级护师主管护师住院医师临床执业医师临床助理医师中医执业医师中医助理医师中西医医师中西医助理口腔执业医师口腔助理医师公共卫生医师公卫助理医师实践技能内科主治医师外科主治医师中医内科主治儿科主治医师妇产科医师西药士/师中药士/师临床检验技师临床医学理论中医理论