Карта имен потоков C ++ и log4cxx - PullRequest
0 голосов
/ 12 февраля 2012

С std::thread теперь тривиально поддерживать список имен потоков в состоянии программы (либо оборачивая поток, либо используя одиночный код для управления списком потоков.)

Яначала использовать log4cxx для своей регистрации, и я хотел бы, чтобы он отображал имя потока.Однако это означает, что я не могу использовать PatternLayout.Номера потоков не очень полезны сами по себе.

Каков наилучший способ сделать это?Не могу ли я просто вывести карту или я могу переопределить PatternLayout / ConversionPattern, чтобы сделать то, что я хочу?И если я перегрузить его, как я могу указать на класс в файле конфигурации?Или я могу добавить конверсионный символ?

1 Ответ

1 голос
/ 14 февраля 2012

Поместите имена потоков с помощью MDC перед настройкой регистратора в вашей программе

 MDC::put( "threadName", threadNameString);

Затем в XML config

   <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%X{threadName} "/>
    </layout>

Таким образом, при каждом сообщении журнала будет отображаться имя вашего потока.

Для получения дополнительной информации проверьте ответ на этот вопрос: Добавьте идентификатор процесса к имени файла журнала в log4cxx

...