У меня есть приложение, которое загружает модули PlugIn с отражением. Приложение является определение log4net лог-Appender в app.config, как:log4net - разные лог-файлы для сборки
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs\xxx.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<threshold value="DEBUG" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger{2} - %message%newline" />
</layout>
</appender>
Я получаю Logger в коде, как:
private static readonly ILog log = LogManager.GetLogger(typeof(Indexer));
Сейчас я ищу способ заявить различные файлы журналов для каждого модуля (сборка), который загружается как плагин с отражением.
Первая проблема заключается в том, что модули совместно используют классы бизнес-библиотеки (они находятся в сборке, которая используется для всех модулей), которая также генерирует записи журнала. Эти записи также должны быть вставлены в лог-файл модуля.
Вторая проблема заключается в том, что я не знаю модули в процессе разработки. Поэтому я не могу вставить некоторую конфигурацию в app.config.
Итак, если один и тот же метод экземпляра вызывается из другой сборки, вы хотите, чтобы его частный журнал записывал в другой файл журнала? Это невозможно. Почему вы все так делаете? Похоже, вы используете ведение журнала для более чем простого устранения неполадок. – Groo
@Groo - нет, существуют разные экземпляры (но одинаковые классы), используемые из разных сборок. – BennoDual
Но они используются из разных сборок в одном и том же приложении (одно приложение)? Если вы регистрируете логгеров по полю 'static' (как вы показали), то есть один экземпляр регистратора. – Groo