8

注: この質問と回答を読みましたが、私が望むものでは機能しません: Log4Net: Programmatically specify multiple loggers (with multiple file appenders)

「質問と回答」スタイルのサービスである WCF サービスがあります。入力を取得し、出力を送信します。それはまったく持続しません。

各 Q&A セッションを個別のファイルに記録する必要があります。

私は 1 つのアペンダー (現在は RollingAppender) を持っています。

WCF サービスへの呼び出しごとに新しいログ ファイルを開始する方法はありますか?

注: 私は XML レイアウトを使用しています。その考えは、ログの出力を解析してグラフィカルに表示できるということです (後の機能)。「クエリプラン」のようなものです。これが、別のファイルでそれらを必要とするもう 1 つの理由です。

注: 別の理由が必要な場合、Log4Net XmlLayoutBase は、アプリが閉じるまで xml フッターをドロップしません。これは、IIS でホストされる WCF サービスの予定されたイベントではありません。

4

3 に答える 3

6

これは私にとってはうまくいくようです:

public static void StartNewFile(this ILog log, string newFileName)
{
    Logger logger = (Logger) log.Logger;

    while (logger != null)
    {
        foreach (IAppender appender in logger.Appenders)
        {
            FileAppender fileAppender = appender as FileAppender;
            if (fileAppender != null)
            {
                fileAppender.File = newFileName;
                fileAppender.ActivateOptions();
            }
        }
        logger = logger.Parent;
    }
}

次の参照が必要です。

using log4net;
using log4net.Appender;
using log4net.Repository.Hierarchy;
于 2013-04-30T17:33:05.160 に答える
2

ファイルにログを記録する代わりに、データベース テーブルにログを記録して、ログ データと共にセッション ID をログに記録することもできます。このようにして、セッション ID に基づいてテーブルに対して選択を行い、そのデータのみを表示できます。

于 2013-04-30T16:39:15.623 に答える