2

log4netを使用してアプリケーションでロギングを実行しています。プロジェクトをTFSにバインドしました。以下のようにlog4netのラッパーを作成しました。

public static class TestLogger
{
    private static readonly ILog log = LogManager.GetLogger("TestLogger");

    static TestLogger()
    {
        log4net.Config.XmlConfigurator.Configure();
    }

    public static void LogInfo(string information)
    {
        log.Info(information);
    }

    public static void LogError(string erroMessage, Exception ex)
    {
        log.Error(erroMessage, ex);
    }

    public static void LogWarnings(string warningText)
    {
        log.Warn(warningText);            
    }
}

VS2010からプログラムを実行しようとすると、ログファイルが作成されていないことがわかりました。別のプロジェクト(TFSにバインドされていない)を作成し、ログを実行すると、成功し、アプリケーションのbin/debugにファイルが作成されました。

以下は私のlog4net構成ファイルです。

<log4net>
  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender, log4net">
    <file value="Log.txt" />
    <appendToFile value="false" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="3" />
    <maximumFileSize value="1GB" />
    <layout type="log4net.Layout.PatternLayout, log4net">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
    </layout>
  </appender>
  <logger name="TestLogger">
    <level value="ALL" />
    <appender-ref ref="RollingFileAppender" />
  </logger>
</log4net>

誰かがこの問題を手伝ってくれる?

4

4 に答える 4

2

トラブルシューティングのヒント:

  1. 構成ファイルでログ ファイルへの絶対パスを定義します。

  2. コード内の現在の作業ディレクトリを確認してください (Environment.CurrentDirectory)。VS デバッガーで実行していて、プロジェクト プロパティの [デバッグ] タブで作業ディレクトリを指定していない場合は、現在の Visual Studio 作業ディレクトリが既定値になる可能性があります。

TFSに縛られていることは関係ないと思います。

于 2011-02-10T10:07:21.873 に答える
1

この部分を変更するだけです

<appendToFile value="true" />
于 2011-04-13T12:18:24.717 に答える
0

ここで説明されているように、内部デバッグをオンにしてみてください。これにより、問題が何であるかがわかります。内部デバッグからの出力がない場合は、log4netを構成していない可能性があります。

于 2011-02-10T13:22:14.340 に答える
0

おそらく、あなたのアプリケーションは、コードのどこかに埋もれている宣言的な設定をすでに使用しています。次のようなものを検索します。 [assembly: log4net.Config.XmlConfigurator(Watch=true)]

それ以外の場合は、.log を使用して log4net リポジトリを取得してみてください log4net.LogManager.GetRepository()タイプILoggerRepositoryのオブジェクトを返します。このオブジェクトを使用して、現在の log4net 構成に関する情報をコンソールまたは別の場所に書き込むことができます。

于 2011-02-10T11:51:18.443 に答える