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

Posted

技术标签:

【中文标题】如何在 WPF 应用程序中使用 App.config 进行 log4net 配置【英文标题】:How to use App.config in WPF application for log4net configuration 【发布时间】:2014-10-06 13:43:15 【问题描述】:

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

现在我想在我的 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();
    

【问题讨论】:

你在启动时调用 log4net.Config.XmlConfigurator.Configure() 吗? 非常感谢罗伯特! 我已经添加了答案,因此解决方案清晰可见 我已经调用了 log4net.Config.XmlConfigurator.Configure() 但它不起作用。请帮助我..您的项目中有任何 log4net.config 文件@ck84vi 【参考方案1】:

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

【讨论】:

【参考方案2】:

很简单,在Window Constructor 里面添加这样一行

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

【讨论】:

【参考方案3】:

这就是你做的更详细的方式

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>

【讨论】:

以上是关于如何在 WPF 应用程序中使用 App.config 进行 log4net 配置的主要内容,如果未能解决你的问题,请参考以下文章

我如何在 wpf 应用程序中使用 wcf [关闭]

.Net:如何在 Windows 窗体应用程序中使用 WPF 用户控件?

如何在 WPF/MVVM 应用程序中处理依赖注入

如何使用 MvvmCross 在 WPF 应用程序中获取命令行参数?

【WPF】【追分】WPF中如何使用windows应用程序的第三方控件?

.net Winform 的应用程序的 app.config 文件驻留在哪里......?