我在我的 webapi 项目中使用 log4net(使用 autofac 和 owin)。我将其添加到我的 Controller 中
LogManager.GetLogger(typeof(NotificationController));
但是我看到没有加载appender。在我的配置中我有这个
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
...
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="aiAppender" />
<appender-ref ref="TraceAppender" />
<appender-ref ref="FileAppender" />
</root>
<appender name="aiAppender" type="Microsoft.ApplicationInsights.Log4NetAppender.ApplicationInsightsAppender, Microsoft.ApplicationInsights.Log4NetAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>
<appender name="TraceAppender" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %m%n" />
</layout>
</appender>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="log\server.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %m%n" />
</layout>
</appender>
</log4net>
我没有构建错误,如果我调用它,我的代码运行没有错误
logger.Fatal("Error");
但是我没有日志。
更新
将它添加到启动类但没有改变
public class Startup
{
private static readonly ILog logger = LogManager.GetLogger(typeof(Startup));
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
logger.Info("Start application");
最佳答案
必须明确告知 Log4Net 您希望它从 App.config 读取 XML 配置。
参见:log4net only works when XmlConfigurator.Configure() is called
在您的应用程序启动代码中调用静态方法 XmlConfigurator.Configure()
,或者为解决方案中的所有项目将以下内容添加到 AssemblyInfo.cs
:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
您可能还会发现必须在启动后立即调用 LogManager.GetLogger()
- 即使记录器实例未用于任何事情,这似乎也有所不同。
关于c# - Log4net appenders 总是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42496220/