如何在log4cpp日志中附加Windows用户名

时间:2017-06-13 20:06:50

标签: c++ logging log4cpp

以下是我当前的模式布局设置:

    %d{%m/%d/%Y %H:%M:%S,%l} [%t]  %-5p %c %x %m%n

因此它输出如下日志文件;

    06/13/2017 10:57:44,632 [3684]  INFO  MyLogCategory File: myclass.cpp Line: 59  My Logged Message

我想将当前的Windows用户名添加到appender,以便我得到以下输出..但到目前为止没有运气。我不想为每条消息添加Windows用户名,而log4cpp应该获取当前用户名并附加它记录的每条消息(我不知道log4cpp还有这个支持。我发现了一个模式键“H”或“h”但是它没有工作并抛出未知的转换说明符'H'。

    06/13/2017 10:57:44,632 [3684][**WINDOWS USER NAME**]  INFO  MyLogCategory File: myclass.cpp Line: 59  My Logged Message

1 个答案:

答案 0 :(得分:1)

我能够使用NDC(嵌套诊断上下文)将用户名附加到日志中。

#include "log4cpp\NDC.hh"

然后我推送了每个线程的上下文(是的NDC是特定于线程的,除非你设置它,否则它不会被所有线程看到)。就我而言,我推送了Windows当前用户名。然后,用户名将自动添加到已在NDC设置的线程下添加的所有日志中。

CString sUserContext = "[" + GetCurrentUserName() + "]";
std::string userContextStr = CT2CA(sUserContext);
log4cpp::NDC::push(userContextStr);