Необходимо изменить эту log4net для записи в файл с возможностью записи во многие файлы

#log4net

#log4net

Вопрос:

Итак, у меня уже работает nhibernate, который использует log4net, и мой web.config в настоящее время выглядит так:

 <log4net debug="false">
  <appender name="console" type="log4net.Appender.ConsoleAppender, log4net">
    <layout type="log4net.Layout.PatternLayout,log4net">
      <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p %c{1}:%L - %m%n"/>
    </layout>
  </appender>
  <!-- Setup the root category, add the appenders and set the default priority -->
  <root>
    <priority value="INFO"/>
    <appender-ref ref="console"/>
  </root>
</log4net>
  

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

Сейчас, похоже, это просто запись в консоль, но мне нужно добавить возможность записи в файлы.

Что мне нужно изменить в моей конфигурации, чтобы иметь возможность это делать?

Я хочу иметь возможность в своем коде сказать, что я хочу записать в файл журнала «logfile_1», и если он не существует, создайте его, в противном случае просто добавьте к нему.

Ответ №1:

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

 <appender name="FileAppender" type="log4net.Appender.FileAppender">
  <file value="k:templog2console.log" />
  <appendToFile value="true" />
  <lockingModel type="log4net.Appender.FileAppender MinimalLock" />
  <layout type="log4net.Layout.XmlLayoutSchemaLog4j" />
</appender>
  

Не забудьте добавить ссылку appender в свой корневой раздел.

Комментарии:

1. Кроме того, вы можете использовать RollingFileAppender, который имеет более надежный набор функций для автоматического архивирования или автоматического резервного копирования файлов, достигающих определенного размера или даты. RollingFileAppender

2. разве я не могу настроить его так, чтобы мне не нужно было определять имя файла?

3. @codecompleting: создание собственных приложений довольно тривиально, поэтому, если вам нужна такая же функциональность с небольшой разницей в значении файла, я уверен, что вы могли бы ее создать. Я не слишком много изучал это, так как обычно я хочу знать, что и где находятся мои файлы журналов для данного приложения.

4. но если у меня более 1 приложения, как мне указать, какое приложение в моем коде?

5. Я хочу убедиться, что это приложение fileappender не влияет на предыдущее приложение console, которое подключено. Повлияет ли это на то, как log4net был настроен ранее? Спасибо!