C# Log4net没有在日志文件中写入任何内容

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

我正在用C#、.NETFramework 4.7和Log4NET2.08开发一个Windows服务应用程序

我的问题是log4net没有记录任何东西。它只创建文件,其他什么都不创建

这是我的配置文件(app.config):

以及我的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();
}
当我在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,但没有一个项目使用它。