log4net 不输出任何东西

log4net doesn't output anything

这是我的 class:

internal class App : IDisposable
{
   private static readonly ILog _log = LogManager.GetLogger(typeof(App));

   internal void Start()
   {
            _log.Info("info");
            _log.Debug("debug");
            _log.Warn("warn");
            _log.Error("error");
            _log.Fatal("fatal");
            Console.WriteLine("test");
   }

   // ...
}

主要方法:

public static void Main()
{
   var dir = AppDomain.CurrentDomain.BaseDirectory;
   XmlConfigurator.ConfigureAndWatch(new Hierarchy(), new FileInfo(Path.Combine(dir, "log4net.xml")));

   // ...
}

.csproj 条目:

  <ItemGroup>
    <None Include="../*.env" CopyToOutputDirectory="Always" />
    <None Include="../log4net.xml" CopyToOutputDirectory="Always" />
  </ItemGroup>

log4net.xml:

<log4net xmlns="http://csharptest.net/downloads/schema/log4net.xsd">
  <appender name="console-default" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date %level %logger - %message%newline"/>
    </layout>
  </appender>

  <root>
    <level value="ALL"/>
    <appender-ref ref="console-default"/>
  </root>
</log4net>

_log 我得到的对象:

我也试过添加

using log4net.Config;
[assembly: XmlConfigurator(Watch = true)]

Properties/AssemblyInfo.cs

程序输出:

同样的事情是,如果我用 FileAppender 替换 appender,它只是创建一个空文件

log4net.xml 文件被复制到每个构建目录附近的可执行文件
log4net 版本 2.0.8
正确读取配置文件。如果我改变一些东西,它会在初始化时抛出错误

ILoggerRepository 实例而不是 Hierarchy 传递给 XmlConfigurator.ConfigureAndWatch


var dir = AppDomain.CurrentDomain.BaseDirectory;
ILoggerRepository repository = log4net.LogManager.GetRepository(Assembly.GetCallingAssembly());
XmlConfigurator.ConfigureAndWatch(repository, new FileInfo(Path.Combine(dir, "log4net.config")));

没有理由对配置进行 xml namespace 声明;使用

<log4net>

而不是

<log4net mlns="http://csharptest.net/downloads/schema/log4net.xsd">