我使用ACE函数ACE_Log_Msg()将日志消息发送到多线程环境中的linux syslog。
在大约5%的日志消息中,我的syslog输出中出现了不需要的额外字符。我用来向ACE发送日志消息的代码如下:
#include "ace/Log_Msg.h"
ACE_Mutex syslog_mtx;
int ACE_TMAIN (int argc, ACE_TCHAR *argv[])
{
ACE_Guard<ACE_Mutex> mtx (syslog_mtx);
ACE_LOG_MSG->open (argv[0], ACE_Log_Msg::SYSLOG, ACE_TEXT ("syslogTest"));
ACE_DEBUG ((LM_INFO, ACE_TEXT (L"my log message\n")));
ACE_LOG_MSG->open (argv[0], ACE_Log_Msg::STDERR, ACE_TEXT ("syslogTest"));
return 0;
}
我在syslog中看到的日志消息如下所示:
Oct 9 15:25:20 SYSLOG ~[62266]: my log message
Oct 9 15:25:20 SYSLOG ``[62266]: 6]: my log message
如您所见,额外的字符:〜,``,6]:似乎插入了应用程序名称/进程ID以syslog格式显示的位置。我似乎无法理解该bug的可能来源。我很乐意听取有关可能原因的建议。
在L
之前移除了"my log message"
,ACE_TEXT已经处理过了