【发布时间】:2020-05-01 12:36:42
【问题描述】:
我知道有一种方法可以从日志消息中删除静态文本,并仅将消息的变量部分保留在内存中。但我不确定它是如何完成的。
举一个具体的例子来说明我的意思:
这是客户端的一些代码:
#include <stdio.h>
#include "my_logging.h"
int main() {
MY_CUSTOM_LOGGING_TECHNIQUE("This is message %d", int, 1);
MY_CUSTOM_LOGGING_TECHNIQUE("This is message %d", int, 2);
return 0;
}
以及应该怎么做:
- 编译/构建期间:
在编译/构建期间生成 XML 文件以提供每条消息的 ID:
<xml>
<message params=1>
<id>123456</id>
<text>This is message %d</text>
<param>int</param>
</message>
<message params=1>
<id>456342</id>
<text>This is message %d</text>
<param>int</param>
</message>
</xml>
- 在运行期间: 只有消息的 ID 与参数的值一起存储在适当的结构中(此处显示为数组“messages_array”): 消息数组:
- 在后处理期间: 在运行时保存的值被迭代并与构建期间保存的 XML 文件结合。此后处理步骤将生成日志文件:
这是消息 1
这是消息 2
我在这里试图解决的主要问题是“不必在运行时将静态文本写入文件。相反,只有消息的 ID 和消息中发送的参数的值。
那么,我该怎么做呢?
【问题讨论】:
-
必须在 C 或 C++ 中完成吗?还有其他几种语言更好地用于解析文本和生成 XML。
-
@jmq XML 文件不是这里的问题。主要问题是去除静态文本并在运行时仅保存参数的值。