إلى الأمام من log4net إلى nlog
سؤال
في مشروعي الحالي، أستخدم مكتبين حيث يستخدم المرء LOG4NET والآخر NLOG لتسجيله. أنا شخصيا أفضل nlog لذلك يتم استخدامه في طلبي كذلك.
أنا لا أعرف الكثير عن log4net لذلك أنا أسأل عما ستكون أفضل طريقة لإعادة توجيه جميع الرسائل برمجيا من LOG4NET إلى NLOG.
هناك نشر حول وكيل Log4net في منتدى NLOG لكن يبدو أن أي شخص قد فعل هذا من قبل.
نصائح أخرى
أساسا سوف تحتاج إلى log4net appender. (log4net.Appender.IAppender
) من شأنه أن يفوض كل شيء DoAppend
يدعو إلى NLOGS Logger
أو Target
.
أحاول القيام بهذه هذه الليلة. أرى Commons.logging تقول إنه يحتوي على توجيه حدث ثنائي الاتجاه بين مكتبات التسجيل.
- استخدم Nuget لإضافة common.logging.log4net و common.logging.nlog (الذي سيحصل على log4net و nlog عبر تبعيات الحزمة)
- أضف التكوين أدناه.
- في
Main()
تهيئة log4net باستخدامlog4net.Config.XmlConfigurator.Configure();
<configuration>
<configSections>
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets async="true">
<target name="file" xsi:type="File" fileName="d:\logs\app1\logging.txt"/>
<target name="console" xsi:type="ColoredConsole" />
</targets>
<rules>
<logger name="*" writeTo="file"/>
<logger name="*" writeTo="console"/>
</rules>
</nlog>
<common>
<logging>
<factoryAdapter type="Common.Logging.NLog.NLogLoggerFactoryAdapter, Common.Logging.NLog">
<arg key="configType" value="INLINE" />
</factoryAdapter>
</logging>
</common>
<log4net>
<!-- Commons.Logging will bridge the log4net messages to NLog, required to see TopShelf log messages -->
<appender name="CommonLoggingAppender" type="Common.Logging.Log4Net.CommonLoggingAppender, Common.Logging.Log4Net">
<layout type="log4net.Layout.PatternLayout, log4net">
<param name="ConversionPattern" value="%level - %class.%method: %message" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="CommonLoggingAppender" />
</root>
</log4net>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="NLog" publicKeyToken="5120e14c03d0593c" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
مراجع: common.loggging أنظمة التسجيل تجسيد
دعم توجيه الحدث ثنائي الاتجاه الكامل ل Entlib 3.1، Entlib 4.1، LOG4NET 1.2.9، LOG4NET 1.2.10 وسجل NLOG
مجرد استخدام log4net.nlogappender.
Nuget Link: https://www.nuget.org/packages/log4net.nlogappender/
تركيب Nuget: Install-Package log4net.NLogAppender