Я использую Log4Net 2.0, у меня он работает как требуется, но для добавления другого регистратора для определенных операторов журнала. Все ведение журнала выполняется одним приложением. Изменение, которое я хочу сделать, заключается в том, что стороннее приложение запускает события, содержащие информацию об отладке / ошибках, я могу поймать эту информацию и, хотя она полезна, я считаю, что она загрязняет обычный файл журнала приложения, и вместо этого предпочла бы, чтобы она сохранялась в собственном журнале. файл.
Конечный результат, который я хотел бы получить, - это файл с именем log-file.txt
со всеми журналами из приложения, кроме сторонних. И 2-й файл с именем log-file-3rdparty.txt
с регистрацией только из стороннего приложения. Проблема, которую я имею, настраивает Log4Net, чтобы иметь 2 отдельных регистратора. Я уже пытался создать 2-й LogFileAppender и добавить его в корень, однако все это делает одинаковые операторы регистрации в обоих регистраторах.
По всему приложению в настоящее время у нас есть оператор GetLogger следующим образом. В идеале это должно оставаться неизменным, поэтому существующее ведение журнала не изменяется. Мне нужен новый регистратор, который не затронут этим оператором, а вместо этого создается исключительно для сторонних журналов.
private readonly ILog _log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
И App.Config следующим образом.
< log4net>
<logger name="MyApp.Logging">
<level value="DEBUG"/>
</logger>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<param name="File" value="log-file.txt" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value=" [Application started] " />
<param name="Footer" value="[Application Finished] "/>
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
</ log4net>
Вы можете помочь?
EDIT
Если это имеет какое-либо значение. Сторонние события журнала регистрируются в том же классе, из которого также запускаются некоторые из событий журнала моего приложения, потому что класс отвечает за управление программным обеспечением третьей части. Это проблема? У меня есть некоторые предположения, что log4net может дифференцировать, какой регистратор создать на основе имен классов, и если это так, нужно ли мне реорганизовать регистрацию сторонних производителей в свой собственный класс?