Как добавить имя пользователя Windows в журнал 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 в приложение, чтобы получить следующий вывод … но пока не повезло. Я не хочу добавлять имя пользователя 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

Решение

Мне удалось добавить имя пользователя в журнал, используя NDC (Nested Diagnostic Context).

#include "log4cpp\NDC.hh"

Затем я выдвинул контекст для каждого потока (да, NDC зависит от потока, он не будет виден всем потокам, если вы его не установите). В моем случае я нажал имя текущего пользователя Windows. Затем имя пользователя автоматически добавляется во все журналы, которые были добавлены в потоке с установленным NDC.

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]