Я использую Log4Net 2.0, у меня он работает, как требуется, но чтобы добавить еще один регистратор для определенных операторов журнала. Все журналы ведутся в один файл-приложение. Изменение, которое я хочу сделать, заключается в том, что стороннее приложение запускает события, содержащие информацию об отладке / ошибке, я могу улавливать эту информацию, и, хотя она полезна, я чувствую, что она загрязняет обычный файл журнала приложения, и вместо этого предпочел бы, чтобы это сохранялось в собственном журнале файл.
Конечным результатом я хотел бы получить файл с именем log-file.txt
со всеми журналами из приложения, кроме журналов сторонних производителей. И второй файл с именем log-file-3rdparty.txt
с ведением журнала только из стороннего приложения. Проблема, с которой я столкнулся, заключается в том, чтобы настроить Log4Net на 2 отдельных регистратора. Я уже пробовал создать второй LogFileAppender и добавить его в корень, однако все это приводит к тому, что в оба регистратора помещаются одни и те же операторы ведения журнала.
В настоящее время в приложении у нас есть следующий оператор GetLogger. В идеале это должно оставаться неизменным, поэтому существующее ведение журнала не изменяется. Мне нужен новый регистратор, на который не влияет этот оператор, а вместо этого создается экземпляр исключительно для стороннего ведения журнала.
закрытый только для чтения 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>
Вы можете помочь?
РЕДАКТИРОВАТЬ
Если это имеет значение. События стороннего журнала регистрируются в том же классе, из которого также запускаются некоторые из событий журнала моего приложения, потому что этот класс отвечает за управление сторонним программным обеспечением. Это проблема? У меня есть некоторые подозрения, что log4net может различать, какой регистратор создать на основе имен классов, и если это ' При переопределении просто ...
Если кто-то заинтересован в сохранении файла PDF в файловой системе, которая отображается гемом промежуточного программного обеспечения PDFKit, то вот он ...
call
для файл middleware.rb. При переопределении просто замените эту строку:
body = PDFKit.new (translate_paths (body, env), @options) .to_pdf
с
pdf = PDFKit.new (translate_paths (body, env), @options)
file = pdf.to_file ('Ваш / файл / имя / путь')
Mymodel.my_method () # Вы можете написать здесь свой метод, чтобы использовать этот файл
body = pdf.to_pdf # Здесь можно изменить тело ответа
Вы также можете переопределить тело ответа и тип содержимого, если не хотите отправлять ответ в формате pdf. Если у вас есть дальнейший запрос, продолжайте.
Эта процедура действительно полезна, потому что, когда у вас есть тяжелый JavaScript или CSS в вашем файле представления, тогда метод render_to_string
не будет работать, т.е. тяжелый JavaScript.