Frameworkタイトルの通りなのですが、以下のようなConsole出力をそのままにして出力先をTraceに転送したい、(というか、Traceに転送した後にファイルに書き出したい)事があります。最初はコンソールアプリで開発して今コールへログを出していた途中からDLLに変更したリリース済みでConsoleをTraceに置き換えるのはいろいろ事情があって難しい従って、既にConsoleに出力されている箇所はそのままにしつつ、内容をTraceに転送してそこからファイルに出力する方法を紹介したいと思います。不要、Traceの内容がファイルに欲しい等の事情が異なるためです。Consoleへ出した内容を直接ファイルに出すこともできますが、実際に運用を始めると以外と取り回しが悪い(インスタンスが一つしか設定できない、出力先がTextWriterの継承なので拡張が面倒、TraceとかDebugは出力先を複数指定できる、TraceListnerの拡張は単純なので簡単)ためConsoleへ出力した内容をTraceへ転送する仕組みの紹介をしたいと思います。実行および確認環境は以下の通りです。データを転送するクラスConsoleの出力内容はConsole.Outに設定されているクラスはConsole.SetOut(TextWriter)メソッドで入れ替えることができるので、TextWriterを継承した自作クラスを作成します。Trace.WriteLine(value);}実装はかなり単純化です内容をTrace.Write系のメソッドに転送するのみです。TextWriterのvirtualメソッド数がかなりあるため、お試しで2つのみoverrideしています。Console.Write(int)等の未overrideメソッドが呼ばれた時はTraceWriter.Write(string)にメッセージが流れてきます。ファイルに出力するクラスこっちは他のサイトでも色々説明があるので簡単に。受け取った内容を固定のファイルに転送します。}}固定ファイルパスをリテラルで持つのは最低の実装ですがサンプルという事で勘弁してください。上記2つのクラスを組み合わせてConsoleに出した内容をファイルに転送します。asdf}基本的な構造はこれで実現できます。上記コードですが、簡単な実装のため、このまま使用するとパフォーマンスや拡張性が低いです。実用の際は以下追加で検討しましょう。TextWriterクラスのvirtualメソッドを適切にoverrideしているか?(必要なら全部overrideすること。TraceToFileListnerクラスの出力先は性能が保証された出力先になっているか?以上です。»Profile受託ソフト会社員でWin系業務屋。趣味でCocos2d-x/C++を触っています。etc...主に受託・開発ネタ、Windowsの事、Srellaris、ゲーム制作の進捗の事を喋ります。ArticleC#で属性を利用して処理に制約の説明を追加するUnityで自動実装プロパティに表示名を指定するCocos2d-xをやめてUnityに移行した話@2019冬C#で文字列にSQLのIN句のようなメソッドを追加するC#のDateTimeとC++のtime_tを相互変換するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。