C# Log4net没有在日志文件中写入任何内容
我正在用C#、.NETFramework 4.7和Log4NET2.08开发一个Windows服务应用程序 我的问题是log4net没有记录任何东西。它只创建文件,其他什么都不创建 这是我的配置文件(app.config): 以及我的ServiceBase类中的内容:C# Log4net没有在日志文件中写入任何内容,c#,.net,windows-services,log4net,C#,.net,Windows Services,Log4net,我正在用C#、.NETFramework 4.7和Log4NET2.08开发一个Windows服务应用程序 我的问题是log4net没有记录任何东西。它只创建文件,其他什么都不创建 这是我的配置文件(app.config): 以及我的ServiceBase类中的内容: public partial class ERPWindowsService : ServiceBase { private static readonly ILog _log = LogManager.G
public partial class ERPWindowsService : ServiceBase
{
private static readonly ILog _log =
LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
catch (Exception ex)
{
_log.Error(ex);
this.Stop();
}
当我在ServiceBase类中捕获异常时:
public partial class ERPWindowsService : ServiceBase
{
private static readonly ILog _log =
LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
catch (Exception ex)
{
_log.Error(ex);
this.Stop();
}
当我停止服务时(我在OnStart
上也这样做):
为什么它不在文件上写任何东西
我已重新启动服务,日志文件仍然为空。j.v.在您的评论中是正确的。如果要在AssemblyInfo.cs文件中配置记录器,请确保它指向正确的xml配置文件(在您的示例app.config中) 或者你也可以打电话
log4net.Config.XmlConfigurator.Configure();
或者是program.cs文件中的一个
这可能会提供更多的解释。您提到创建了日志文件,这意味着配置已成功加载 由于您没有配置
root
记录器(这是有效的),而只配置了命名的记录器,因此必须确保配置的名称与给定给ILog
实例的名称匹配
这就是问题所在
您的ILog
实例通过以下行返回的类型命名
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)
这将是类型
的全名
,包括其命名空间
对于类程序
这将是您的命名空间。程序
对于
类ERPWindowsService
,这将是YourNamespace.ERPWindowsService
您必须在Log4net
配置中使用这些全名
<logger name="YourNamespace.ERPWindowsService">
<level value="DEBUG" />
<appender-ref ref="ERPDebugAppender" />
</logger>
<logger name="ERPService_Error">
或者,您可以为
ILog
实例指定显式名称,例如:
log4net.ILog log = log4net.LogManager.GetLogger("ERPService_Error");
与当前的Log4net
配置相匹配
<logger name="YourNamespace.ERPWindowsService">
<level value="DEBUG" />
<appender-ref ref="ERPDebugAppender" />
</logger>
<logger name="ERPService_Error">
除了在异常处理程序中之外,您是否添加了任何日志记录?您是否调试过它,以检查您是否真的遇到了记录某些内容的线路?我会添加一行来记录“开始”消息,只是为了检查……是的,我已经完成了所有这些。请查看我的更新问题。搜索此行[assembly:log4net.Config.XmlConfigurator(ConfigFile=“log4net.Config”,Watch=true)],并检查它是否与log4net配置文件的名称匹配您缺少根记录器。这是否受支持?@j.v.我在许多项目中使用log4net,但没有一个项目使用它。