java日志——修改日志管理器配置+日志本地化

来源:互联网 发布:流体仿真分析软件 编辑:程序博客网 时间:2024/05/16 01:18

【0】README

0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java日志——修改日志管理器配置+日志本地化 的相关知识;


【1】修改日志管理器配置

1.1)可以通过编辑配置文件来修改日志系统的各种属性。 在默认情况下, 配置文件存在于:
e/lib/logging.properties

  • 1.1.1)要想使用另一个配置文件, 就要将 java.util.logging.config.file 特性设置为配置文件的存储位置, 并用下列命令启动应用程序:
    java -Djava.util.logging.config.file=configFile MainClass

Warning)在main方法中调用 System.setProperty(“java.util.logging.config.file”, file) 没有任何影响, 其原因是 日志管理器 在VM 启动过程中被初始化, 它会在main之前执行;
1.2)要想修改默认的日志记录级别, 就需要要编辑配置文件, 并修改命令行
.level=INFO

  • 1.2.1)可以通过 添加 以下内容来指定自己的日志记录级别
    com.company.myapp.level=FINE (也就是说, 在日志记录名后面添加后缀 .level)
  • 1.2.2)日志记录并不将消息发送到控制台上,这是处理器的任务;如果要想在控制台上看到 FINE 级别的消息, 就需要进行一下设置:
    java.util.loggeing.ConsoleHandler.level=FINE

Warning)

  • W1)在日志管理器配置的属性设置不是系统属性, 因此, 用 -Dcom.mycompany.myapp.level=FINE 启动应用程序不会对日志记录产生任何影响;

1.3)日志属性文件由 java.util.logging.LogManager 类处理:

  • 1.3.1)可以通过将 java.util.logging.manager 系统属性设置为某个子类的名字 来 指定一个不同的日志管理器;
  • 1.3.2)在保存标准日志管理器的同时, 还可以从 日志属性文件跳过初始化;
  • 1.3.3)还有一种方式, 是将 java.util.logging.config.class 系统属性设置为某个类名, 该类在通过其他方式设定日志管理器属性;

Attention) 在运行的程序中, 使用 jconsole 程序 也可以 改变日志记录 的级别;


【2】本地化

2.1)本地化的应用程序包含资源包中的本地特定信息。 资源包由各个地区(如美国或德国)的映射集合组成;

  • 2.1.1)一个程序可以包含多个资源包: 一个用于菜单, 其他用于日志消息;
  • 2.1.2)要想将映射添加到一个资源包中, 需要为每个地区创建一个文件。英文消息映射位于 com/mycompany/logmes_en.properties, 德文消息位于 com/mycompany/logmes_de.properties文件中;
  • 2.1.3)可以将这些文件与应用程序的类文件放在一起, 以便 ResourceBundle 类自动地对它们进行定位。 这些文件都是 纯文本文件, 组成如下:
readingFile=Achtung !renamingFile=Datei wird umbenannt.....

2.2)在请求日志记录器时, 可以指定一个资源包:

Logger logger = Logger.getLogger(loggerName, "com.mycompany.logmes");
  • 2.2.1)然后, 为日志消息指定资源包的关键字, 而不是实际的日志消息字符串;
    logger.info(“readingFile”);
  • 2.2.2)通常需要 在 本地化的消息中添加一些参数, 因此,消息应该包括占位符{0}, {1} 等。 例如, 要想在日志消息中包含文件名, 就应该使用下列方式包括占位符:
Reading file {0}.Achutng! Datei {0} wird eingelesen.
  • 2.2.3)然后, 通过调用下面的一个方法向占位符传递具体的值:
logger.log(Level.INFO, "readingFile", fileName);logger.log(Level.INFO, "renamingFile", new Object[]{oldname, newname});

这里写图片描述

0 0