以编程方式配置 Log4NetLoggerFactoryAdapter(重试)
Configuring Log4NetLoggerFactoryAdapter Programmatically (Trying Again)
有人问过这个问题 here,但解决方案不是编程配置。在这种情况下,库 Wrapper.dll
已正确配置为 Common.Logging
。控制台应用程序 ConsoleApplication1.exe
尝试实现 Log4NetLoggerFactoryAdapter
.
这 工作正常,将日志条目从 Wrapper.dll
发送到控制台。
app.config
:
<configSections>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net1211">
<arg key="configType" value="INLINE" />
</factoryAdapter>
</logging>
</common>
<log4net>... a valid ConsoleAppender ..</log4net>
ConsoleApplication1
内的代码:
//var properties = new Common.Logging.Configuration.NameValueCollection();
//properties.Add("configType", "INLINE");
//var adapter = new Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter(properties);
var c1 = new Wrapper();
这个不起作用。它不会将日志条目从 Wrapper.dll
发送到控制台。
app.config
:
<configSections>
<!-- <sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup> -->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<!-- <common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net1211">
<arg key="configType" value="INLINE" />
</factoryAdapter>
</logging>
</common> -->
<log4net>... a valid ConsoleAppender ..</log4net>
ConsoleApplication1
内的代码:
var properties = new Common.Logging.Configuration.NameValueCollection();
properties.Add("configType", "INLINE");
var adapter = new Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter(properties);
var c1 = new Wrapper();
通过编程解决方案,我可以在 ConsoleApplication1
中从适配器或 log4net
成功使用 GetLogger
,但我无法从使用的记录器中传播日志事件在 "Wrapper" 库中。
请注意,在 中工作正常 我已经允许 xml 并评论了编程调用。在 不起作用 我已经评论了相关的 xml 并实现了程序代码。另请注意,这是一个简单的示例。实际应用程序正在尝试使用从 Matlab 实现 Common.Logging
的 .NET 库。
创建适配器后,您必须将其设置为 LogManager's Adapter:
var adapter = new Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter(properties);
Common.Logging.LogManager.Adapter = adapter;
var c1 = new Wrapper();
有人问过这个问题 here,但解决方案不是编程配置。在这种情况下,库 Wrapper.dll
已正确配置为 Common.Logging
。控制台应用程序 ConsoleApplication1.exe
尝试实现 Log4NetLoggerFactoryAdapter
.
这 工作正常,将日志条目从 Wrapper.dll
发送到控制台。
app.config
:
<configSections>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net1211">
<arg key="configType" value="INLINE" />
</factoryAdapter>
</logging>
</common>
<log4net>... a valid ConsoleAppender ..</log4net>
ConsoleApplication1
内的代码:
//var properties = new Common.Logging.Configuration.NameValueCollection();
//properties.Add("configType", "INLINE");
//var adapter = new Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter(properties);
var c1 = new Wrapper();
这个不起作用。它不会将日志条目从 Wrapper.dll
发送到控制台。
app.config
:
<configSections>
<!-- <sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup> -->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<!-- <common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net1211">
<arg key="configType" value="INLINE" />
</factoryAdapter>
</logging>
</common> -->
<log4net>... a valid ConsoleAppender ..</log4net>
ConsoleApplication1
内的代码:
var properties = new Common.Logging.Configuration.NameValueCollection();
properties.Add("configType", "INLINE");
var adapter = new Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter(properties);
var c1 = new Wrapper();
通过编程解决方案,我可以在 ConsoleApplication1
中从适配器或 log4net
成功使用 GetLogger
,但我无法从使用的记录器中传播日志事件在 "Wrapper" 库中。
请注意,在 中工作正常 我已经允许 xml 并评论了编程调用。在 不起作用 我已经评论了相关的 xml 并实现了程序代码。另请注意,这是一个简单的示例。实际应用程序正在尝试使用从 Matlab 实现 Common.Logging
的 .NET 库。
创建适配器后,您必须将其设置为 LogManager's Adapter:
var adapter = new Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter(properties);
Common.Logging.LogManager.Adapter = adapter;
var c1 = new Wrapper();