如何在WPF应用程序中使用App.config配置log4net?

8

目前我正在开发一个现有控制台应用程序的WPF版本。 在控制台应用程序中,我使用log4net来处理所有日志记录。 因此,我在App.config文件中配置了所有的附加器等。 在控制台应用程序中一切都运行良好。

现在我想在我的WPF应用程序中实现相同的日志记录功能。 我必须说,我对WPF完全是新手,这是我的第一个WPF项目。 我尝试将与控制台应用程序完全相同的App.config添加到我的WPF项目中。 但它不起作用。没有任何FileAppenders创建文件,但编译时也没有任何错误或警告。

我该怎么做才能获得与控制台应用程序中log4net相同的日志记录功能? 如何在WPF应用程序中配置log4net(附加器)?

提前感谢

xxxxxx编辑xxxxxx

基于Robert的提示,我解决了这个问题。 我添加了

log4net.Config.XmlConfigurator.Configure()

现在我的日志记录方式和控制台应用程序中的方式完全相同,都输出到我的主窗口。

public MainWindow()
    {
        // check if Application is already running
        // if it is running - Kill
        if (System.Diagnostics.Process.GetProcessesByName(System.IO.Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetEntryAssembly().Location)).Length > 1) System.Diagnostics.Process.GetCurrentProcess().Kill();
        log4net.Config.XmlConfigurator.Configure(); 
        InitializeComponent();
    }

1
你在启动时调用log4net.Config.XmlConfigurator.Configure()吗? - Robert
非常感谢你,Robert! - ck84vi
我已经添加了答案,以便解决方案清晰可见。 - Robert
我已经调用了log4net.Config.XmlConfigurator.Configure(),但它没有起作用。请帮帮我...你的项目中有log4net.config文件吗?@ck84vi - arun d
3个回答

10
你需要在启动时调用log4net.Config.XmlConfigurator.Configure()

2

很简单,在Window Constructor中加入以下这行代码即可:

public MainWindow()
{       
    log4net.Config.XmlConfigurator.Configure(); 
    InitializeComponent();
    //.....
}

1

这是更详细的做法

using System.Windows;
using log4net;

namespace Namespace
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
    private static readonly ILog Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    protected override void OnStartup(StartupEventArgs e)
    {
        log4net.Config.XmlConfigurator.Configure();
        //Log.Info("Hello World");
        base.OnStartup(e);
    }
}
}

不要忘记在你的App.config中的configSections中添加log4net。
<configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net" />
</configSections>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接