WebSphere Liberty 在 message.log 中自定义时间戳
WebSphere Liberty Customize TimeStamp in message.log
我不喜欢 Liberty 服务器显示元数据的方式。您可以选择在 console.log 中完全不使用元数据,或者选择在 message.log.
中有效地使用元数据。
我在 message.log 中的当前格式如下所示:
[7/13/18 14:00:00:000 CEST] 000006a4 v.k.j.G I Running G
[7/13/18 14:00:00:002 CEST] 000006a4 v.k.j.G W Nothing to delete.
[7/13/18 14:00:00:002 CEST] 000006a4 vv.k.j.G I Import: update T
[7/13/18 14:00:00:003 CEST] 000006a4 v.k.j.G I next import schedule is Fri Jul 13 15:00:00 CEST 2018
这看起来并没有那么糟糕,但是一旦输出变长并且需要换行,它就会变成一堵难以阅读的杂乱文本的大墙。
我想将时间戳自定义成这样:
[7/13/18 14:00:00] I Running G
[7/13/18 14:00:00] W Nothing to delete
[7/13/18 14:00:00] I Import: update T
我也想交换月份和日期[dd/mm/yy]
我的 server.xml 看起来像这样
<logging
maxFiles="10"
traceFormat="ADVANCED"
isoDateFormat="false"></logging>
我决定使用 isoDateFormat="false"
,因为它只会用更多的字符使输出变得混乱。
[2018-07-13T13:59:27.337+0200]
如何自定义 message.log 输出以仅显示简单的(欧洲)日期和时间格式而不显示 class 信息?
messages.log 的格式当前不可自定义。
如果有更多可解析的日志会有所帮助,您可以使用 Liberty 18.0.0.1 中引入的 JSON 格式。您可以使用 server.xml 中的 messageFormat
属性进行设置。使用该格式,也许与 jq
等工具结合使用,可以让您 pick/choose 查看哪些字段。
Liberty 有两种消息格式:
basic
格式,包括时间戳、线程 ID、日志级别、日志名、类名、方法名和消息。
json
格式,其中包含很多字段——例如(这将全部在一行上):
{
"type":"liberty_message",
"host":"f7cd7d87697a",
"ibm_userDir":"\/opt\/ibm\/wlp\/usr\/",
"ibm_serverName":"defaultServer",
"ibm_datetime":"2018-07-04T20:33:41.873+0000",
"ibm_messageId":"CWWKF0011I",
"ibm_threadId":"0000002b",
"module":"com.ibm.ws.kernel.feature.internal.FeatureManager",
"loglevel":"AUDIT",
"ibm_sequence":"1530736421873_0000000000008",
"message":"CWWKF0011I: The server defaultServer is ready to run a smarter planet."
}
作为如何使用 jq 实现您所要求的示例,您可以 运行 Liberty with messages.log json 格式:
然后您可以使用 jq 查看您的 messages.log,如下所示:
cat messages.log | jq '"[" + .ibm_datetime[5:7] + "/" + .ibm_datetime[8:10] + "/" + .ibm_datetime[0:4] + " " + .ibm_datetime[11:19] + "] " + .loglevel[0:1] + " " + .message' -r
输出示例如下:
[07/19/2018 12:20:23] A CWWKE0001I: The server defaultServer has been launched.
[07/19/2018 12:20:23] A CWWKE0100I: This product is licensed for development, and limited production use. The full license terms can be viewed here: https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/license/base_ilan/ilan/18.0.0.1/lafiles/en.html
[07/19/2018 12:20:25] A CWWKG0093A: Processing configuration drop-ins resource: /opt/ibm/wlp/usr/servers/defaultServer/configDropins/defaults/keystore.xml
[07/19/2018 12:20:26] W CWWKF0009W: The server has not been configured to install any features.
[07/19/2018 12:20:26] A CWWKF0011I: The server defaultServer is ready to run a smarter planet.
[07/19/2018 12:20:33] A CWWKE0085I: The server defaultServer is stopping because the JVM is exiting.
[07/19/2018 12:20:33] A CWWKE0036I: The server defaultServer stopped after 10.546 seconds.
虽然这是一个需要记住的长字符串,但为了方便起见,您可以为其起个别名。
alias prettyLog="jq '\"[\" + .ibm_datetime[5:7] + \"/\" + .ibm_datetime[8:10] + \"/\" + .ibm_datetime[0:4] + \" \" + .ibm_datetime[11:19] + \"] \" + .loglevel[0:1] + \" \" + .message' -r"
cat messages.log | prettyLog
[07/19/2018 12:20:23] A CWWKE0001I: The server defaultServer has been launched.
...
我不喜欢 Liberty 服务器显示元数据的方式。您可以选择在 console.log 中完全不使用元数据,或者选择在 message.log.
中有效地使用元数据。我在 message.log 中的当前格式如下所示:
[7/13/18 14:00:00:000 CEST] 000006a4 v.k.j.G I Running G
[7/13/18 14:00:00:002 CEST] 000006a4 v.k.j.G W Nothing to delete.
[7/13/18 14:00:00:002 CEST] 000006a4 vv.k.j.G I Import: update T
[7/13/18 14:00:00:003 CEST] 000006a4 v.k.j.G I next import schedule is Fri Jul 13 15:00:00 CEST 2018
这看起来并没有那么糟糕,但是一旦输出变长并且需要换行,它就会变成一堵难以阅读的杂乱文本的大墙。
我想将时间戳自定义成这样:
[7/13/18 14:00:00] I Running G
[7/13/18 14:00:00] W Nothing to delete
[7/13/18 14:00:00] I Import: update T
我也想交换月份和日期[dd/mm/yy]
我的 server.xml 看起来像这样
<logging
maxFiles="10"
traceFormat="ADVANCED"
isoDateFormat="false"></logging>
我决定使用 isoDateFormat="false"
,因为它只会用更多的字符使输出变得混乱。
[2018-07-13T13:59:27.337+0200]
如何自定义 message.log 输出以仅显示简单的(欧洲)日期和时间格式而不显示 class 信息?
messages.log 的格式当前不可自定义。
如果有更多可解析的日志会有所帮助,您可以使用 Liberty 18.0.0.1 中引入的 JSON 格式。您可以使用 server.xml 中的 messageFormat
属性进行设置。使用该格式,也许与 jq
等工具结合使用,可以让您 pick/choose 查看哪些字段。
Liberty 有两种消息格式:
basic
格式,包括时间戳、线程 ID、日志级别、日志名、类名、方法名和消息。
json
格式,其中包含很多字段——例如(这将全部在一行上):
{
"type":"liberty_message",
"host":"f7cd7d87697a",
"ibm_userDir":"\/opt\/ibm\/wlp\/usr\/",
"ibm_serverName":"defaultServer",
"ibm_datetime":"2018-07-04T20:33:41.873+0000",
"ibm_messageId":"CWWKF0011I",
"ibm_threadId":"0000002b",
"module":"com.ibm.ws.kernel.feature.internal.FeatureManager",
"loglevel":"AUDIT",
"ibm_sequence":"1530736421873_0000000000008",
"message":"CWWKF0011I: The server defaultServer is ready to run a smarter planet."
}
作为如何使用 jq 实现您所要求的示例,您可以 运行 Liberty with messages.log json 格式:
然后您可以使用 jq 查看您的 messages.log,如下所示:
cat messages.log | jq '"[" + .ibm_datetime[5:7] + "/" + .ibm_datetime[8:10] + "/" + .ibm_datetime[0:4] + " " + .ibm_datetime[11:19] + "] " + .loglevel[0:1] + " " + .message' -r
输出示例如下:
[07/19/2018 12:20:23] A CWWKE0001I: The server defaultServer has been launched.
[07/19/2018 12:20:23] A CWWKE0100I: This product is licensed for development, and limited production use. The full license terms can be viewed here: https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/license/base_ilan/ilan/18.0.0.1/lafiles/en.html
[07/19/2018 12:20:25] A CWWKG0093A: Processing configuration drop-ins resource: /opt/ibm/wlp/usr/servers/defaultServer/configDropins/defaults/keystore.xml
[07/19/2018 12:20:26] W CWWKF0009W: The server has not been configured to install any features.
[07/19/2018 12:20:26] A CWWKF0011I: The server defaultServer is ready to run a smarter planet.
[07/19/2018 12:20:33] A CWWKE0085I: The server defaultServer is stopping because the JVM is exiting.
[07/19/2018 12:20:33] A CWWKE0036I: The server defaultServer stopped after 10.546 seconds.
虽然这是一个需要记住的长字符串,但为了方便起见,您可以为其起个别名。
alias prettyLog="jq '\"[\" + .ibm_datetime[5:7] + \"/\" + .ibm_datetime[8:10] + \"/\" + .ibm_datetime[0:4] + \" \" + .ibm_datetime[11:19] + \"] \" + .loglevel[0:1] + \" \" + .message' -r"
cat messages.log | prettyLog
[07/19/2018 12:20:23] A CWWKE0001I: The server defaultServer has been launched.
...