我被要求格式化记录器消息,以便它们显示在一行上。问题是记录器具有以编程方式定义的处理程序,我无法更改其中任何一个。是否可以覆盖.properties文件中日志消息的格式,即使已在logp方法中的logger类中定义了语法?我为无法提供代码而道歉。我已经尝试创建自定义格式化程序并在logger.properties文件中指向此,但更改不可见。
谢谢, 丹尼尔
答案 0 :(得分:0)
我被要求格式化记录器消息,以便它们显示在一行上。
如果他们都在使用SimpleFormatter,那么请阅读API文档中的example,并通过系统属性或logging.properties对其进行配置,如SimpleFormatter类级别文档中所述。
是否可以覆盖.properties文件中日志消息的格式,即使已在logp方法中的logger类中定义了语法?
记录器正在执行的唯一格式是参数化消息格式参数的顺序。如果要更改格式,则应使用localization和参数化日志记录。然后,您可以通过提供不同的resource bundles(每个版本)来交换不同的格式,这允许您更改每种类型的消息密钥的格式。但是,这只是格式化LogRecord消息和params。其余部分由格式化程序控制。
我已尝试创建自定义格式化程序并在logger.properties文件中指向此文件,但更改不可见。
在设置编程定义的处理程序之前执行logging.properties。调用LogManager.readConfiguration或在该代码运行之后。请记住,这将撤消正在设置的以编程方式定义的处理程序。但是,这可能对您没有帮助,因为如果您能够编写代码来触发重新配置,您只需编写代码即可在编程定义的处理程序上安装格式化程序。