Sto cercando di farlo stasera. Vedo Commons.Logging dice che ha un routing di eventi bidirezionale tra le librerie di logging.
- Usa NuGet per aggiungere Common.Logging.log4net e Common.Logging.NLog (che otterrà log4net e NLog via dipendenze tra pacchetti)
- aggiungere la configurazione di seguito.
- In
Main()
inizializza log4net utilizzando 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>
Riferimenti: Common.Logging Bridging Logging Systems
completa evento bi-direzionale di routing supporto per EntLib 3.1, 4.1 EntLib, log4net 1.2.9, log4net 1.2 .10 e NLog registrazione
Eliminerei del tutto NLog. È stato pubblicizzato come un'alternativa migliore, ma il suo creatore ha smesso di lavorarci dopo essere stato assunto da Microsoft, il che è un peccato .. Ho iniziato a usare log4net in seguito e mi piace di più, forse dare un'occhiata alla documentazione e vedere per te stesso. –
Grazie per il suggerimento ... Prenderò in considerazione l'utilizzo di log4net per la mia applicazione invece – Martin
NLog sembra essere molto attivo :-) –