【问题标题】:ReportEvent: Logged messages run all lines togetherReportEvent:记录的消息一起运行所有行
【发布时间】:2021-12-27 15:55:48
【问题描述】:

我注意到,当使用 ReportEvent 记录多行消息时,它会删除所有行尾并将文本一起运行。例如,我的 MC 文件可能有:

MessageId=
Severity=Informational
SymbolicName=MSG_TEST_MSG
Language=English
Some text
Another line of text.
Last line of text.
.

事件查看器中的消息显示所有三行一起运行。

如果我将\r\n 序列放入插入字符串中的文本中,那么这些行结尾会正确显示在记录的消息中。

另外,如果我使用FormatMessageW 生成上述消息的文本字符串,则行尾正确包含在文本中。它们似乎只有在发布到事件查看器时才会被删除。

我没有看到任何关于线端被丢弃在任何地方的事实。任何想法?就是这样吗?

谢谢。

【问题讨论】:

    标签: c++ windows winapi


    【解决方案1】:

    您必须使用%n 在消息中强制“硬换行”。

    Source:

    %n

    在行尾出现硬换行符。这 可以与 FormatMessage 一起使用以确保消息适合 一定的宽度。

    "Why does Format­Message say that %0 terminates the message without a trailing newline? Is it secretly adding newlines?" 在这种情况下也可能很有趣。

    【讨论】:

    • 这确实有效,但是当我将 %n 添加到行尾时,它确实会在此处中断行,但不会删除软行结束,因此下一行以空格开头并缩进文本。比以前好多了,但我不明白这个实用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多