【问题标题】:How to append Windows Username in log4cpp log如何在 log4cpp 日志中附加 Windows 用户名
【发布时间】:2017-06-13 20:06:50
【问题描述】:

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

    %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 用户名添加到附加程序中,以便获得以下输出.. 但到目前为止还没有运气。我不想为每条消息添加 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

【问题讨论】:

    标签: c++ logging log4cpp


    【解决方案1】:

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

    #include "log4cpp\NDC.hh"
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-31
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多