Как накатить на макс файлы с помощью log4net RollingFileAppender, который использует параметризованное имя? - PullRequest
2 голосов
/ 21 октября 2011

У меня есть клиентское приложение, которое использует RollingFileAppender log4net и может быть создано несколько раз. Первоначально я записал все свои журналы в один файл, однако довольно скоро я понял, что log4net блокирует файл во время записи, хотя, даже если бы я использовал менее ограничительный режим записи, я бы все равно в моих файлах журналов много беспорядка.

Я решил включить идентификатор процесса в имя файла, например:

<appender name="HumanRollingLog" type="log4net.Appender.RollingFileAppender">
  <file type="log4net.Util.PatternString" value="Log\TestLog[%processid].txt"/>
  <param name="DatePattern" value="dd.MM.yyyy'.log'"/>
  <appendToFile value="true"/>
  <rollingStyle value="Size"/>
  <staticLogFileName value="true" />
  <maxSizeRollBackups value="10"/>
  <maximumFileSize value="1KB"/>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%type] [%thread] %-5level %logger - %message%newline%exception%"/>
  </layout>
</appender> 

Это сработало. Однако он полностью испортил функции прокрутки, поскольку теперь каждый процесс порождает свой собственный файл журнала, фактическая прокрутка происходит только после повторения идентификаторов процессов. Например, запуск моего приложения 3 раза, в результате чего создаются следующие журналы:

TestLog[5396].txt
TestLog[5396].txt.1
TestLog[5396].txt.10
TestLog[5396].txt.2
TestLog[5396].txt.3
TestLog[5396].txt.4
TestLog[5396].txt.5
TestLog[5396].txt.6
TestLog[5396].txt.7
TestLog[5396].txt.8
TestLog[5396].txt.9
TestLog[5976].txt
TestLog[5976].txt.1
TestLog[5976].txt.10
TestLog[5976].txt.2
TestLog[5976].txt.3
TestLog[5976].txt.4
TestLog[5976].txt.5
TestLog[5976].txt.6
TestLog[5976].txt.7
TestLog[5976].txt.8
TestLog[5976].txt.9
TestLog[6860].txt
TestLog[6860].txt.1
TestLog[6860].txt.10
TestLog[6860].txt.2
TestLog[6860].txt.3
TestLog[6860].txt.4
TestLog[6860].txt.5
TestLog[6860].txt.6
TestLog[6860].txt.7
TestLog[6860].txt.8
TestLog[6860].txt.9

У кого-нибудь есть идеи, что я могу сделать, чтобы решить эту проблему? Мне бы хотелось, чтобы каждый процесс имел свой собственный файл, но я не могу позволить повторному использованию между ВСЕМИ процессами.

Спасибо!

1 Ответ

1 голос
/ 23 октября 2011

Если вы настаиваете на использовании идентификатора процесса в имени файла журнала, то встроенные шаблоны прокатки никогда не будут работать .Я хотел бы изучить ваши требования.Что на самом деле означает «у меня все равно будет много беспорядка в моих лог-файлах»?Какие ответы вы пытаетесь получить из своих файлов журнала?

Решение другой проблемы состоит в том, чтобы добавить идентификатор процесса к сообщениям журнала и выполнить фильтрацию / поиск с помощью одного из множества инструментов.доступно ( панель мониторинга log4net , программа просмотра log4net , Apache Chainsaw , Microsoft LogParser или Kiwi LogViewer .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...