-1

最近、log4net(.NET) を使用したロギング プロジェクトをテストしましたが、これはコンソール プロジェクトです。プロジェクトを VS で実行するとログ ファイルを作成できますが、NUnit で .exe ファイルを実行するとログ ファイルを作成できません。ログの内容は UNnit GUI に出力されるだけです。エラーは発生しません。どうして?App.config で log4net を設定します。


このケースをテストするには、Nunit を使用する必要があります。


私はグーグルで検索しましたが、答えはありませんでした。


次のように App.config の私の設定ファイル:

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

<log4net>
<root>
  <level value="WARN">
  </level>     
  <appender-ref ref="SystemLogFileAppender" />
</root>

<appender name="SystemLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <param name="File" value="d:\" type="" />
  <param name="AppendToFile" value="true" />
  <param name="RollingStyle" value="Date" />
  <param name="DatePattern" value="yyyyMMdd_SYS.TXT" />
  <param name="StaticLogFileName" value="false" />
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

  <Encoding value="UTF-8" />
  <layout type="Log.LogLayout">
    <param name="ConversionPattern" value=" Level: %property{Level}%n Message: %property   {Message}%n Exception: %property{Exception}%n CreateDate: %property{CreateDate}%n%n" />
  </layout>
  <filter type="Log.SystemLogFilter">
  </filter>
  </appender>

プロジェクトのAssemblyInfo.csの次のコードを追加しましたが、機能しません:

[assembly: log4net.Config.XmlConfigurator()]

次に、次のように変更しましたが、再び機能しません。

[assembly: log4net.Config.XmlConfigurator(ConfigFile=@"D:\LogTest\FrameworkTest.exe.config",Watch=true)]
4

2 に答える 2

1

エラーなし: log4net がログに記録できないか、ログ情報が見つからないか、log4net.Config.XmlConfigurator が dll で構成されていない場合、log4net はログに記録せず、エラーも発生しません。ロギングがプログラムに影響を与えるべきではないためです。

ログが書き込まれない場合は、構成に問題がある可能性があります。ロギングは、NUnit の実行ディレクトリで構成する必要があります。バイナリ ファイルを使用して log4net.config をデプロイし、テスト プロジェクトに属性を追加する必要があります (テスト プロジェクトにログインするため)。

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
于 2013-02-25T14:48:40.697 に答える
0

NUnit をバージョン 2.6.2 に更新してから作業を行いました。構成で:

[assembly: log4net.Config.XmlConfigurator()]
于 2013-02-26T03:19:44.320 に答える