- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Java 1.8 和 Log4J 2.4 JUL 适配器(log4j-jul-2.4.jar、log4j-core-2.4.jar、log4j-api-2.4.jar)
public class SimpleTest {
public static void main(String[] args) throws Exception {
// writing the configuration file on the fly
try (java.io.PrintStream p = new java.io.PrintStream("./log4j-jul-test.xml")) {
p.println("<Configuration>");
p.println(" <Appenders>");
p.println(" <Console name='Console' target='SYSTEM_OUT'>");
p.println(" <PatternLayout pattern='JUL: %d %t %-5level %m%n' />");
p.println(" </Console>");
p.println(" </Appenders>");
p.println(" <Loggers>");
p.println(" <Root level='debug'>");
p.println(" <AppenderRef ref='Console' />");
p.println(" </Root>");
p.println(" </Loggers>");
p.println("</Configuration>");
}
System.setProperty("log4j.configurationFile", "log4j-jul-test.xml");
// specifying the java.util.logging.LogManager implementation
// COMMENT THE LINE BELOW TO SEE HOW THE STANDARD JAVA LOGGER REACTS
System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager");
// getting the plain Java logger
java.util.logging.Logger logger = java.util.logging.Logger.getLogger("test");
// works with both standard and JUL loggers
logger.info(() -> "This 1st line will be logged");
// works only with standard Java logger. JUL is attempting to MessageFormat it but shouldn't
logger.info(() -> "This 2nd line will {NOT} be logged by JUL");
// JUL will report that An exception occurred processing Appender Console
// java.lang.IllegalArgumentException: can't parse argument number: NOT
// at java.text.MessageFormat.makeFormat(MessageFormat.java:1429)
// at java.text.MessageFormat.applyPattern(MessageFormat.java:479)
// works with both standard and JUL logger
logger.log(java.util.logging.Level.INFO, "This 3rd line will {0} be logged", "successfully");
}
}
上面的代码非常简单,可以快速运行。尝试一下!
有谁知道为什么 Log4J JUL 试图MessageFormat提供String,而它显然不应该,因为标准 Java 记录器不这样做? (现在无论如何都可以传递任何参数)
请注意,方法签名是:
java.util.logging.Logger.info(供应商<字符串>)
最佳答案
java.util.logging.Logger 的 Javadoc 说
Most of the logger output methods take a "msg" argument. This msg argument may be either a raw value or a localization key. During formatting, if the logger has (or inherits) a localization ResourceBundle and if the ResourceBundle has a mapping for the msg string, then the msg string is replaced by the localized value. Otherwise the original msg string is used. Typically, formatters use java.text.MessageFormat style formatting to format parameters, so for example a format string "{0} {1}" would format two parameters as strings.
因为 Log4j 预计为 jul 编写的代码也需要这种情况,因此将提供的字符串转换为 MessageFormatMessage 。然而,在查看 JDK 提供的格式化程序时,它们似乎都不支持 MessageFormat 格式化。这值得在 Log4j 用户列表上讨论。
关于java - 为什么 Log4J (jul) 尝试对来自供应商的字符串消息进行 MessageFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33047152/
Java 文档说 CompletableFuture:supplyAsync(Supplier supplier)在 ForkJoinPool#commonPool() 中运行任务而 Completa
我正在尝试设置 IVR,或者更具体地说是使用 Asterisk 的自动接线员。除了简单的自动菜单系统之外,我不想要任何花哨的东西,而不是调用分机(现在),如果按下 1,只需调用同一条电话线 (POTS
当我尝试从 Symfony2 项目根运行以下命令时 php bin/vendors install 我收到以下错误: Could not open input file: bin/vendors 我对
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
我正在开发一个涉及用户位置检测的 Android 应用程序。我想知道的是,这个 -> LocationManager.GPS_PROVIDER 是如何工作的? 它是使用手机中的 GPS 系统还是使用移
我不知道如何编写代码以在可能的情况下选择网络提供商,或者如果网络不可用则选择 GPS 提供商。我怎样才能改变代码来得到这个。这是我的第一个 Android 应用程序,我尝试这样做但没有成功。 pack
我不是 MySQL 专家,我必须为我的水平设计一个相当复杂的数据库。 我现在面临的问题在于同一个表(公司的宏观类别)中存在供应商-客户关系: 宏表 id name mega_i
我希望至少有人能在这里为我指明正确的方向。 我的业务需要开放式身份验证。 但是,不要使用其他服务,如facebook 或 google 等。 我们有一个成员(member)数据库 - 一个标准的 as
如果我需要一个变量的 ThreadLocal,是否还需要使用 Supplier(也是线程安全的)? 例如,Supplier 是否不需要在这里实现线程安全? private ThreadLocal> m
我在 brunch@1.7.6 没有编译 bower_component css 文件时遇到问题。类似于 Separating app and vendor css in Brunch .只有 css
我正在使用 select2在 angular 项目中(使用自耕农)。 Select2 css 位于以下目录中: bower_components/select2/select2.css bower_c
在我的 Rails 应用程序目录中,vendor/plugins 和 vendor/assets/stylesheets 存在(两者都是空的)。我想创建 javascripts 文件夹。我可以手动创建
我的代码 fragment 是: mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); if
我继承了一个 Hadoop 安装,我很想知道以前的管理员是如何安装它的,它是从哪里来的。我是 Hadoop 的新手,但似乎以前的管理员简单地从源代码安装了 Apache Hadoop(而不是使用 Cl
我是 Ionic 2 的新手,正在尝试学习所有介绍如何添加提供程序的在线教程。 Ionic 似乎更改了生成的应用程序结构。有人可以给我一个例子,说明如何使用当前的 Ionic 2 应用程序结构执行此操
为什么供应商只支持无参数构造函数? 如果存在默认构造函数,我可以这样做: create(Foo::new) 但是如果唯一的构造函数需要一个字符串,我必须这样做: create(() -> new Fo
我已经通过 docker-compose 构建了一个容器,这里是 .yml: gateway: build: . image: sng container_name: sn
虽然不是直接的编程问题,但我想我可以在这里找到最佳答案。 为什么 USB-IF 监管供应商 ID 的使用并出售它们? 想要编写开源驱动程序的人或想要 2,000 美元会产生巨大影响的小公司会发生什
我正在使用 laravel-analytics ( https://github.com/spatie/laravel-analytics/ ) 并已在本地安装了所有内容,工作正常。 但是,每当我尝试
有没有一种方法/测试工作流程 - 如果我想从 gui 读取字符串内容并将其放入 ArrayList 中,然后将其写入 .xlsx 文件并使用该文件作为数据提供程序。如果是的话,我可以获得它的@test
我是一名优秀的程序员,十分优秀!