我正在多线程环境中使用ACE函数ACE_log_Msg()向linux系统日志发送日志消息。
在大约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
如您所见,在应用程序名/进程ID以syslog格式显示的位置似乎插入了额外的字符:~、``、6]:等。
我好像不明白那只虫子的可能来源。我很高兴听到对可能原因的建议。
最佳答案
删除L
之前的"my log message"
,ACE\u文本已经处理
关于linux - Linux/Unix Syslog使用ACE写入不需要的字符来记录消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47996369/