C# Log4Net未记录日志(可能未初始化)

C# Log4Net未记录日志(可能未初始化),c#,logging,log4net,log4net-configuration,C#,Logging,Log4net,Log4net Configuration,第一次玩Log4Net,我就遇到麻烦了。我已经学习了各种教程,但我无法让它注销任何内容。让我给你看看我的代码,希望你能告诉我我做错了什么 app.config AssemblyInfo.cs [assembly: log4net.Config.XmlConfigurator(Watch=true)] public static ILog Log; static void Main(string[] args) { // Setup Logging log4net.Conf

第一次玩Log4Net,我就遇到麻烦了。我已经学习了各种教程,但我无法让它注销任何内容。让我给你看看我的代码,希望你能告诉我我做错了什么

app.config


AssemblyInfo.cs

[assembly: log4net.Config.XmlConfigurator(Watch=true)]
public static ILog Log;

static void Main(string[] args)
{
    // Setup Logging
    log4net.Config.XmlConfigurator.Configure();
    Log = LogManager.GetLogger("MyAwesomeApp");

    // ...
}
Presenter.cs

[assembly: log4net.Config.XmlConfigurator(Watch=true)]
public static ILog Log;

static void Main(string[] args)
{
    // Setup Logging
    log4net.Config.XmlConfigurator.Configure();
    Log = LogManager.GetLogger("MyAwesomeApp");

    // ...
}
在班上的第一名,我有这样一句话:

private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
然后,我尝试稍后在类中使用log变量:

bool isDebugEnabled = log.IsDebugEnabled;
log.Debug("Failed to save", e);
每当我检查
isDebugEnabled
变量时,它都是false,如果我检查日志变量,则所有其他
isBlahEnabled
都是false

我怀疑我没有正确连接app.config文件,因为这是我第一次尝试使用它。我在解决方案资源管理器中右键单击该项目,添加一个新项目,选择应用程序配置文件并将其命名为app.config,从而创建了该项目。

这个项目适合我:

app.config


还要确保
app.config
上的生成操作设置为None,复制到输出目录设置为“如果更新,复制”。可以在文件属性中设置这些设置

Program.cs

[assembly: log4net.Config.XmlConfigurator(Watch=true)]
public static ILog Log;

static void Main(string[] args)
{
    // Setup Logging
    log4net.Config.XmlConfigurator.Configure();
    Log = LogManager.GetLogger("MyAwesomeApp");

    // ...
}

加上我的2美分:我也有同样的问题,但我在单独的
log4net.config
中使用了上面的配置(因此我在所有应用程序上都使用了相同的配置),但我只是忘记了在构建“更新时复制”(或类似的措辞,有德语版本)上设置文件属性.

仅添加我的2p,以防这有助于其他人搜索此问题的解决方案:

在我的例子中,除了Log4net之外,我还使用了NServicebus.Logging包,这个包包含的类型与Log4net中的类型名称完全相同,只是名称空间不同


修复“using”语句或完全限定类型名解决了问题,但很难发现问题

运行应用程序的帐户是否具有在配置位置创建和写入文件的权限?确实如此。请参阅我对@Waldo答案的回复,我现在可以在不更改任何权限的情况下运行日志记录,等等。我删除了AssemblyInfo.cs中的行,并将Main()中的第一行添加到App.xaml.cs的构造函数中(我正在处理一个WPF项目),现在一切都正常了。知道它为什么以前不工作吗?我不熟悉assemblyinfo方法。文档中的何处对此进行了描述?我猜它与实际配置略有不同。这两个教程都使用AssemblyInfo.cs方法:但现在不用麻烦了,这已经可以工作了!非常感谢!