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">
这是我的 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">