その他のログソース

前のトピックでは、S# クラスに組み込まれたオブジェクトがログのソースでした。S# は、ログのソースが独自クラスである場合、またはログのソースを特定のクラスに関連付ける必要はなくアプリケーション全体に役立てる場合のための機能を提供します。前者の場合は、自分のクラスで ILogSource インターフェイスを実装するか、BaseLogReceiver を継承する必要があります。後者の場合は、.NET トレースシステムを使用する TraceSource を使用できます。これを行う方法は、Samples/08_Misc/01_Logging サンプルに示されています。

ロギングサンプル

  1. BaseLogReceiver を継承するカスタムクラスを作成します。

    private class TestSource : BaseLogReceiver
    {
    }
    
  2. LogManager を作成し、ユーザークラスの変数を宣言します。

    private readonly LogManager _logManager = new LogManager();
    private readonly TestSource _testSource;
    
    
  3. ログソースを追加します。

    _logManager.Sources.Add(_testSource = new TestSource());
    _logManager.Sources.Add(new Ecng.Logging.TraceSource());
    
    
  4. ログリスナーを追加します。

    // ログメッセージは GUI コンポーネントに表示されます
    _logManager.Listeners.Add(new GuiLogListener(Monitor));
    // ファイルにも書き込みます
    _logManager.Listeners.Add(new FileLogListener
    {
     FileName = "logs",
    });
    
    
  5. カスタムクラスのロギングメッセージを追加します。ロギングレベルはランダムに選択されます。

    var level = RandomGen.GetEnum<LogLevels>();
    switch (level)
    {
     case LogLevels.Inherit:
     case LogLevels.Debug:
     case LogLevels.Info:
     case LogLevels.Off:
     	_testSource.AddInfoLog("{0} (source)!!!".Put(level));
     	break;
     case LogLevels.Warning:
     	_testSource.AddWarningLog("Warning (source)!!!");
     	break;
     case LogLevels.Error:
     	_testSource.AddErrorLog("Error (source)!!!");
     	break;
     default:
     	throw new ArgumentOutOfRangeException();
    }
    
  6. トレースメッセージを追加します。

    var level = RandomGen.GetEnum<LogLevels>();
    switch (level)
    {
     case LogLevels.Inherit:
     case LogLevels.Debug:
     case LogLevels.Info:
     case LogLevels.Off:
     	Trace.TraceInformation("{0} (trace)!!!".Put(level));
     	break;
     case LogLevels.Warning:
     	Trace.TraceWarning("Warning (trace)!!!");
     	break;
     case LogLevels.Error:
     	Trace.TraceError("Error (trace)!!!");
     	break;
     default:
     	throw new ArgumentOutOfRangeException();
    }
    
  7. サンプル実行の結果。sample ログ記録