我在哪里初始化XAML中的log4net?

时间:2014-01-16 12:29:28

标签: xaml log4net

我们在XAML应用程序中使用log4net,我们现在遇到一个问题,我们在初始化log4net之前遇到异常。 XAML应用程序中的第一个代码在哪里执行?

我们现在将它放在App.xaml.cs中,其中App.xaml是:

<Application x:Class="Trebuchet.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml" Startup="Application_Startup">
    <Application.Resources>

    </Application.Resources>
</Application>

相关的App.xaml.cs是:

private static ILog log;

private void Application_Startup(object sender, StartupEventArgs e)
{
    XmlConfigurator.Configure();
    log = LogManager.GetLogger(typeof (App));
    log.Info(string.Format("Trebuchet version {0} started", Assembly.GetExecutingAssembly().GetName().Version));
    SetDevenvPaths();

    System.Windows.Forms.Application.ThreadException += Application_ThreadException;
    System.Windows.Forms.Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
    AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
}

或者还有其他原因导致log4net在xaml下遇到麻烦吗?对于发生这种情况的情况(仅在一台计算机上),我创建了一个简单的命令行C#app,它创建了一个日志文件并写入正常。所以它是这个应用程序特有的东西。

更新:和app.exe.config文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821"/>
  </configSections>

  <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">

      <param name="File" value="C:\Catapult.log"/>

      <param name="AppendToFile" value="true"/>
      <param name="MaxSizeRollBackups" value="2"/>
      <param name="MaximumFileSize" value="100KB"/>
      <param name="RollingStyle" value="Size"/>
      <param name="StaticLogFileName" value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] ac.server %-5p %c - %m%n"/>
      </layout>
    </appender>

    <root>
      <level value="DEBUG"/>
      <appender-ref ref="RollingFileAppender"/>
    </root>
  </log4net>
</configuration>

1 个答案:

答案 0 :(得分:0)

您未在配对中按属性配置lognet的任何原因:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

然后无需在您的Application_Startup方法中放置Configure。