4

ここで何が問題なのかわかりません。Outlook アドインを使用して、log4net でログ ファイルに書き込みたいだけです。私のapp.configファイルには次のものがあります:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
     <configSections>
          <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
     </configSections>
<log4net>
     <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
         <param name="File" value="log-file.txt" />
         <param name="AppendToFile" value="true" />
         <rollingStyle value="Size" />
         <maxSizeRollBackups value="10" />
         <maximumFileSize value="10MB" />
         <staticLogFileName value="true" />
         <layout type="log4net.Layout.PatternLayout">
              <param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />
         </layout>
     </appender>
     <root>
          <level value="DEBUG" />
          <appender-ref ref="LogFileAppender" />
     </root>
</log4net>
</configuration>

私のスタートアップ クラス ThisAddIn.cs に関連するステートメントを次に示します (コメントは、私が試したバリエーションを示しています)。

//protected static readonly ILog log = LogManager.GetLogger("application-log");
public static readonly ILog log = LogManager.GetLogger(typeof(ThisAddIn));
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    //BasicConfigurator.Configure();
    //XMLConfigurator.Configure();

    log.Info("Application Start");
    log.Warn("This is a warning message.");
    log.Debug("This is a debug message");

    if (log.IsDebugEnabled)
    {
        log.Debug("This is another debug message");
    }

これに関する私の調査では、project/bin/Debug フォルダーにある log-file.txt というファイルに書き込む必要がありますが、何も作成されていません。Debugger を使用してコードにステップ インすると、ログ オブジェクトのメソッドは問題なく動作しているように見えます。また、同じ結果が得られないファイルに対して、次の絶対指定を試しました。

<param name="File" value="c:\\try\\logger\\log-file.txt" />

誰かが私の間違いを見つけることができますか?

4

5 に答える 5

14

Log4Net は、あなたが彼に言わない限り、app.config を調べません。app.config に記述した log4net 構成は、別の xml に記述したり、コードでプログラム的に記述したりすることもできます。

彼の構成をどこから取得するかを log4net に指示する必要があります。参照: http://logging.apache.org/log4net/release/manual/configuration.html

あなたの場合にそれを行う最も簡単な方法は、追加するだけです:

[assembly: log4net.Config.XmlConfigurator(Watch=true)]

Properties\AssemblyInfo.csファイルの任意の場所 。

これを行った後、「c:\try\logger\log-file.txt」を「log-file.txt」のみに置き換えます。プログラムを実行すると、Debug フォルダーに表示されます。

于 2011-04-26T18:09:26.710 に答える
3

Windowsアプリの場合、これをProgram:Main()メソッドに追加できます。

log4net.Config.XmlConfigurator.Configure();
于 2012-05-14T17:43:37.017 に答える
0

global.asax の application start に以下を追加します。

log4net.Config.XmlConfigurator.Configure();

于 2013-06-14T10:26:30.843 に答える
0

使用しないでください

<param name="File" value="c:\try\logger\log-file.txt" />

代わりに単一のバーを使用してみてください

<param name="File" value="c:\try\logger\log-file.txt" />

フォルダーのアクセス許可を確認し、global.asax.cs で log4net を初期化することを忘れないでください。

    protected void Application_Start()
    {
        log4net.Config.XmlConfigurator.Configure();
        ...
    }
于 2011-04-26T17:44:58.590 に答える
0

私の場合、 a を使用していましたBufferedRollingFileAppenderが、そのevaluator要素を省略しました:

  <evaluator type="log4net.Core.LevelEvaluator">
    <threshold value="DEBUG"/>
  </evaluator>
于 2015-03-25T18:49:33.760 に答える