以下是我当前的模式布局设置:
%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
答案 0 :(得分:1)
我能够使用NDC(嵌套诊断上下文)将用户名附加到日志中。
#include "log4cpp\NDC.hh"
然后我推送了每个线程的上下文(是的NDC是特定于线程的,除非你设置它,否则它不会被所有线程看到)。就我而言,我推送了Windows当前用户名。然后,用户名将自动添加到已在NDC设置的线程下添加的所有日志中。
CString sUserContext = "[" + GetCurrentUserName() + "]";
std::string userContextStr = CT2CA(sUserContext);
log4cpp::NDC::push(userContextStr);