我注意到當使用 ReportEvent 記錄多行訊息時,它會洗掉所有行尾并將文本一起運行。例如,我的 MC 檔案可能有:
MessageId=
Severity=Informational
SymbolicName=MSG_TEST_MSG
Language=English
Some text
Another line of text.
Last line of text.
.
事件查看器中的訊息顯示所有三行同時運行。
如果我將\r\n文本中的序列放入插入字串中,這些行尾會正確顯示在記錄的訊息中。
此外,如果我使用FormatMessageW生成上述訊息的文本字串,則行尾會正確包含在文本中。它們似乎只有在發布到事件查看器時才會被洗掉。
我還沒有看到任何關于線端被丟棄在任何地方這一事實的參考。任何的想法?這只是它的方式嗎?
謝謝。
uj5u.com熱心網友回復:
您必須使用%n來強制訊息內的“硬換行”。
來源:
%n
當它出現在一行的末尾時生成一個硬換行符。這可以與 FormatMessage 一起使用以確保訊息適合一定的寬度。
“為什么 FormatMessage 說 %0 在沒有尾隨換行符的情況下終止訊息?它是在偷偷添加換行符嗎?” 在這種情況下也可能很有趣。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/357867.html
