如何在 websphere liberty 中调整 json 日志格式
How to tweak the json log format in websphere liberty
我们在 IBM Cloud 上有一个基于自由的应用程序,我们想将结构化日志发送到 LogDNA 服务。
目前,当我们设置 com.ibm.ws.logging.message.format=json
时,它会以如下格式发出日志:
{
"type": "",
"host": "",
"ibm_userDir": "",
"ibm_serverName": "",
"message": "",
"ibm_threadId": "",
"ibm_datetime": "",
"module": "",
"loglevel": "",
"ibm_sequence": "",
"ext_thread": ""
}
相反,LogDNA 最适合这样的格式:
{
"line": "This is an awesome log statement",
"app": "myapp",
"level": "INFO",
"env": "production",
"meta": {
"customfield": {
"nestedfield": "nestedvalue"
}
}
}
有没有办法重命名 liberty 发出的 JSON 属性?
目前没有内置的方法来重新映射字段名称——但我们认识到它的价值。 https://github.com/OpenLiberty/open-liberty/issues/6079 有一个未解决的问题。请添加您的评论,以确保它涵盖您想要的内容。
更新:从 19.0.0.10 开始,现在支持此功能!
我终于可以通过将我的 server.xml 中的日志记录配置设置为如下所示来获得我期望的行为:
<logging traceSpecification="${env.TRACE_SPEC}" traceFileName="stdout" isoDateFormat="true"/>
并在我的 kubernetes 部署中设置以下环境变量:
containers:
- env:
- name: TRACE_SPEC
value: "*=info"
- name: WLP_LOGGING_MESSAGE_FORMAT
value: json
- name: WLP_LOGGING_MESSAGE_SOURCE
value: ""
- name: WLP_LOGGING_CONSOLE_FORMAT
value: json
- name: WLP_LOGGING_CONSOLE_LOGLEVEL
value: info
- name: WLP_LOGGING_CONSOLE_SOURCE
value: message,trace,accessLog,ffdc,audit
- name: WLP_LOGGING_JSON_FIELD_MAPPINGS
value: loglevel:level,ibm_datetime:timestamp
我们在 IBM Cloud 上有一个基于自由的应用程序,我们想将结构化日志发送到 LogDNA 服务。
目前,当我们设置 com.ibm.ws.logging.message.format=json
时,它会以如下格式发出日志:
{
"type": "",
"host": "",
"ibm_userDir": "",
"ibm_serverName": "",
"message": "",
"ibm_threadId": "",
"ibm_datetime": "",
"module": "",
"loglevel": "",
"ibm_sequence": "",
"ext_thread": ""
}
相反,LogDNA 最适合这样的格式:
{
"line": "This is an awesome log statement",
"app": "myapp",
"level": "INFO",
"env": "production",
"meta": {
"customfield": {
"nestedfield": "nestedvalue"
}
}
}
有没有办法重命名 liberty 发出的 JSON 属性?
目前没有内置的方法来重新映射字段名称——但我们认识到它的价值。 https://github.com/OpenLiberty/open-liberty/issues/6079 有一个未解决的问题。请添加您的评论,以确保它涵盖您想要的内容。
更新:从 19.0.0.10 开始,现在支持此功能!
我终于可以通过将我的 server.xml 中的日志记录配置设置为如下所示来获得我期望的行为:
<logging traceSpecification="${env.TRACE_SPEC}" traceFileName="stdout" isoDateFormat="true"/>
并在我的 kubernetes 部署中设置以下环境变量:
containers:
- env:
- name: TRACE_SPEC
value: "*=info"
- name: WLP_LOGGING_MESSAGE_FORMAT
value: json
- name: WLP_LOGGING_MESSAGE_SOURCE
value: ""
- name: WLP_LOGGING_CONSOLE_FORMAT
value: json
- name: WLP_LOGGING_CONSOLE_LOGLEVEL
value: info
- name: WLP_LOGGING_CONSOLE_SOURCE
value: message,trace,accessLog,ffdc,audit
- name: WLP_LOGGING_JSON_FIELD_MAPPINGS
value: loglevel:level,ibm_datetime:timestamp