Я собираюсь использовать log4net
в моем wpf
приложении.И мне нужны сообщения в моем журнале, которые выглядят так:
11/8/2018 10:49:38 AM 13 (5368) properties disabled.
, где 13
- processId
, который пишет это сообщение.Так что это довольно легко.Но, к сожалению, я не могу этого достичь.Поэтому мне просто нужен соответствующий макет шаблона для моего log4net
регистратора.
Я нашел следующее сообщение в разделе часто задаваемых вопросов log4net
официального сайта:
В следующем примере задается имя файла для FileAppender
для включения идентификатора текущего процесса, указав шаблон %processid
в свойстве File.
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="log-file-[%processid].txt" />
<layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline" />
</appender>
Так что это работает, нотолько для имени файла, а не для макета в моем файле журнала.И мне нужно поместить это %processid
в мой макет.И мой текущий макет:
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{dd/MM/yyyy HH:mm:ss,fff tt} %processid (%thread) - %message%newline" />
</layout>
И мой журнал просто записывает processid
строку в мой файл журнала.
22/11/2018 16:21:51,863 PM processid (1) - Exiting application.
Я также нашел a SO ответ .И это работает.Но свойство %processid
инициализируется только один раз при запуске.И в моем приложении процесс записи часто меняется .Так что это решение мне не подходит.И я думаю, что это может быть достигнуто по умолчанию log4net
настройки макета.
Другой вариант использует type="log4net.Util.PatternString"
как тип моего conversionPattern
.Но это также не подходит (если я использую этот тип - type="log4net.Util.PatternString"
- в conversionPattern
, тогда %threadId
, %level
и даже %message
будут печататься как строковые константы).
23/11/2018 16:22:52,456 PM 31560 [thread] level - message
Но мне нужны и %threadId
, и %processid
в журнале.