1. ホーム
  2. c#

[解決済み] コンソール出力のファイルへのミラーリング

2023-03-11 09:47:36

質問

C# のコンソールアプリケーションで、コンソール出力をテキストファイルにミラーリングするスマートな方法はありますか?

現在、私はちょうど同じ文字列を両方の Console.WriteLineInstanceOfStreamWriter.WriteLine をログ・メソッドに追加します。

どのように解決するのですか?

手間がかかるかもしれませんが、私なら逆にします。

をインスタンス化し TraceListener をインスタンス化し、コンソール用とログファイル用をそれぞれ一つずつ作成します。 Trace.Write 文の代わりに Console.Write . ログやコンソール出力を削除したり、別のロギング機構を取り付けたりすることが、後で簡単にできるようになります。

static void Main(string[] args)
{
    Trace.Listeners.Clear();

    TextWriterTraceListener twtl = new TextWriterTraceListener(Path.Combine(Path.GetTempPath(), AppDomain.CurrentDomain.FriendlyName));
    twtl.Name = "TextLogger";
    twtl.TraceOutputOptions = TraceOptions.ThreadId | TraceOptions.DateTime;

    ConsoleTraceListener ctl = new ConsoleTraceListener(false);
    ctl.TraceOutputOptions = TraceOptions.DateTime;

    Trace.Listeners.Add(twtl);
    Trace.Listeners.Add(ctl);
    Trace.AutoFlush = true;

    Trace.WriteLine("The first line to be in the logfile and on the console.");
}

私の記憶では、アプリケーションの設定でリスナーを定義することができ、ビルドに触れることなくロギングを有効にしたり無効にしたりすることが可能です。