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

时间:2014-08-13 08:58:22

标签: c# wpf log4net app-config rollingfileappender

目前正在研究现有控制台应用程序的WPF版本。 在控制台应用程序中,我使用log4net来完成所有日志记录。 因此我在App.config文件中配置了所有的appender等。 在控制台应用程序中一切正常。

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

我需要做什么才能获得与我的控制台应用程序相同的log4net日志记录功能? 如何在WPF应用程序中配置log4net(Appenders)?

提前谢谢

xxxxxx编辑xxxxxx

基于罗伯茨提示,我可以解决它。 我添加了

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();
    }

3 个答案:

答案 0 :(得分:8)

您需要在启动时致电log4net.Config.XmlConfigurator.Configure()

答案 1 :(得分:2)

简单,在Window Constructor内只需添加此行

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

答案 2 :(得分:0)

这就是您做得更详细的方式

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);
    }
}
}

别忘了将log4net添加到App.config中的configSections中

<configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net" />
</configSections>