目前正在研究现有控制台应用程序的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();
}
答案 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>