gpt4 book ai didi

java - 如何设置 java.util.logging.Formatter 使用的语言环境?

转载 作者:行者123 更新时间:2023-11-30 10:17:46 25 4
gpt4 key购买 nike

我在 Android 中使用 java.util.logging 因为我需要记录到系统日志以外的其他输出。目前我正在使用 java.util.logging.SimpleFormatter .当它记录到一个文件时,它使用默认区域设置格式化日期和时间戳,在我的例子中这使得它难以阅读(非欧洲数字,复杂的用例,长话短说)。

java.util.Formatter (与 java.util.logging.Formatter 相对),您可以向构造函数提供 Locale 参数,因此您可以根据需要指定 ROOT 语言环境:

Formatter formatter = new Formatter(sb, Locale.ROOT);

(以类似的方式,您可以将语言环境参数传递给 String.format()。)但是 java.util.logging.Formatter 及其后代似乎没有任何方法来指定语言环境用过。

我可以扩展 FormatterSimpleFormatter 并覆盖 format()formatMessage(),但我不在那里看到任何用于格式化日期/时间戳的 Hook ,所以我必须重写格式化整个 LogRecord 的功能。这可能还不算太糟糕,但它比提供语言环境要差得多(而且更容易出错)。

我目前的策略是复制并修改 SimpleFormatter.format() 的代码,但这当然会切断应用程序 future 对该方法的修复。

还有其他想法吗?

最佳答案

您可以更改 format of the SimpleFormatter到任何 pattern supported by the java.util.Formatter .正如您所指出的,Locale.getDefault() SimpleFormatter 始终使用它来格式化日志记录。

尝试使用 java.util.Locale.setDefault​(Locale.Category, Locale)将格式类别设置为 Locale.ROOT。例如:

java.util.Locale.setDefault​(Locale.Category.FORMAT, Locale.ROOT);

否则,您必须按照 java.util.logging.SimpleFormatter 中的说明尝试格式化日期的各个部分。文档:

java.util.logging.SimpleFormatter.format="%1$tb %1$td, %1$tY %1$tl:%1$tM:%1$tS %1$Tp %2$s%n%4$s: %5$s%n"

免责声明:我是 com.sun.mail.util.logging 的内容开发者包含在 JavaMail 项目中。如果您使用 com.sun.mail.util.logging.CompactFormatter它选择 locale of the resource bundle分配给日志记录。如果您不使用本地化,则 null is used as the default locale这应该与 ROOT 相同。

作为最后的手段,您必须自己推出或寻找第 3 方库。

关于java - 如何设置 java.util.logging.Formatter 使用的语言环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49580681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com