C# asp中的Log4Net:记录消息时不创建任何文件

C# asp中的Log4Net:记录消息时不创建任何文件,c#,asp.net,.net-core,C#,Asp.net,.net Core,我正在使用。它应该是直截了当的,但是没有创建日志文件,我也没有想法了 最简单的示例(Startup.cs): .csproj文件中的相关信息: <TargetFramework>netcoreapp2.0</TargetFramework> ... <PackageReference Include="Microsoft.Extensions.Logging.Log4Net.AspNetCore" Version="2.1.0" /> ... <

我正在使用。它应该是直截了当的,但是没有创建日志文件,我也没有想法了

最简单的示例(Startup.cs):

.csproj文件中的相关信息:

<TargetFramework>netcoreapp2.0</TargetFramework>

...

<PackageReference Include="Microsoft.Extensions.Logging.Log4Net.AspNetCore" Version="2.1.0" />

...

<Content Update="log4net.config">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
netcoreapp2.0
...
...
保存最新
log4net.config:

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="DebugAppender" type="log4net.Appender.DebugAppender" >
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
    </layout>
  </appender>
  <root>
    <level value="ALL"/>
    <appender-ref ref="DebugAppender" />
  </root>
</log4net>


在log4net.config文件中,还尝试在注释中@pfx给出的
附录下添加

解决方案:


假设配置已连接;使用log4net.Appender.FileAppender而不是log4net.Appender.DebugAppender;
DebugAppender
不会写入文件

这意味着
log4net.config
需要这样更改:

  <?xml version="1.0" encoding="utf-8" ?>
  <log4net>
    <appender name="FileAppender" type="log4net.Appender.FileAppender" >
      <file value="C:\path\to\your\logfile.log" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="ALL"/>
      <appender-ref ref="FileAppender" />
    </root>
  </log4net>


还有,
loggerFactory.AddLog4Net()
似乎不会自动查找
log4net.config
(从项目文档中可以理解)。相反,您必须指定
loggerFactory.AddLog4Net(“log4net.config”)

我通常使用App.Config。但是,这需要调用XmlConfigurator.Configure()。这里可能存在同样的问题?@GinjaNinja XmlConfigurator似乎是由nuget包提供的;使用
log4net.Appender.FileAppender
而不是log4net.Appender.DebugAppender
DebugAppender`没有写入文件。@pfx就是这样。我将写一个关于如何解决它的完整答案。听到你的问题,我很抱歉,也很抱歉没有看到,因此,试图解决图书馆可能存在的问题。无论如何,最新版本的nuget应该在executing assembly文件夹中查找log4net.config文件,而不需要直接在扩展名上设置log4net.config文件名。
  <?xml version="1.0" encoding="utf-8" ?>
  <log4net>
    <appender name="FileAppender" type="log4net.Appender.FileAppender" >
      <file value="C:\path\to\your\logfile.log" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="ALL"/>
      <appender-ref ref="FileAppender" />
    </root>
  </log4net>