log4j2.xml 内的数学运算
我想在 log4j2.xml
中添加自定义模式。 在那里我需要对日志输出进行一些数学运算,例如乘法 (*) 、取模 (%) 等。
例如,假设我将 Unix 时间(以秒为单位)作为日志输出。如果我需要乘以1000
,我该怎么做?
我尝试了不同的方法来做到这一点。但它以纯文本形式输出数学运算。
这是我在 log4j2.xml
中使用的示例模式。我在那里尝试了不同的乘法方法。
<Console name="stdout" target="SYSTEM_OUT">
<PatternLayout>
<pattern>%d{UNIX} %{1000*%d{UNIX}} (%d{UNIX})*1000 1000*(%d{UNIX}) %n</pattern>
</PatternLayout>
</Console>
它输出纯文本值。不是相乘后的值。
1645687086 %{1000*1645687086} (1645687086)*1000 1000*(1645687086)
那么有没有一种方法可以让我在 xml 标签本身内进行乘法(*) 和取模(%) 等数学运算?
I want to add a custom pattern inside log4j2.xml
.
In there I need to do some math operations like multiplication (*)
, modulo(%)
of the log output.
For an example, assume I'm getting the Unix time in seconds as the log output. If I need to multiply it by 1000
, how should I do it?
I tried out different ways of doing that. But it outputs the math operations as plain text.
Here is the example pattern I used in log4j2.xml
. I tried out different ways of multiplications in there.
<Console name="stdout" target="SYSTEM_OUT">
<PatternLayout>
<pattern>%d{UNIX} %{1000*%d{UNIX}} (%d{UNIX})*1000 1000*(%d{UNIX}) %n</pattern>
</PatternLayout>
</Console>
It outputs the plain text value. Not the values after multiplication.
1645687086 %{1000*1645687086} (1645687086)*1000 1000*(1645687086)
So is there a way that I can do math operations like muliplication(*) and modulo(%) inside the xml tag itself?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的问题可能是一个经典的 XY 问题。
如果要打印从纪元开始的时间戳(以毫秒为单位),请使用
%d{UNIX_MILLIS}
。另一方面,如果您正在寻找
PatternConverter
执行算术替换,没有一个。可用模式的列表可以在文档。然而 Log4j 2.x 具有很强的可扩展性,您可以编写和注册自己的模式转换器。
编辑:要创建新的
PatternConverter
,您可以从以下内容开始:并将其用作
%math{10 + 20}
。为了使用 Log4j 2.x 注册此插件,请按照 中的说明进行操作插件文档。Your question is probably a classical XY problem.
If you want to print the timestamp in milliseconds from the Epoch use
%d{UNIX_MILLIS}
.If, on the other hand, you are looking for
PatternConverter
that performs arithmetic substitution, there isn't one. The list of the available patterns can be found in the documentation.However Log4j 2.x is very extensible and you can write and register your own pattern converter.
Edit: To create a new
PatternConverter
you can start from something like this:and use it as
%math{10 + 20}
. In order to register this plugin with Log4j 2.x proceed as described in the plugins documentation.