56813


例えば、Debug時にはStackFrameを使用してスタック情報を取得しているとします。  
Releaseオブジェクトでも、そのログ出力処理を残しておいて問題ないのでしょうか。(納品物にpdbファイルを抱え持つことになります。)  
また、Releaseオブジェクトにてログ出力する際の一般的な方法が他にあるのでしょうか。


CC BY-SA 4.0
2019-07-22T07:46:25.537
56810
2019-07-22T09:36:53.977
32228
question
c# debugging logging
Releaseオブジェクトでのログ出力方法について


# StackTrace/StackFrame と .pdb

.pdbファイルがなくてもStackFrameの使用は可能です。ただし関数名とかの実行ファイルから取得できる情報だけとなり、ファイル名や行番号とかの情報はなくなります。

.pdbファイルはあくまで開発デバッグ用のファイルですので製品としてユーザーに提供するのは良くありません。もしどうしても渡す必要がある場合は製品とは分けて納品することをおすすめします。

* * *

# Releaseオブジェクトでログ出力する方法

実行ファイルとは別に設定ファイルを用意してそれによって挙動を変える手法があります。.NETでは標準で「アプリケーション構成ファイル」(.configファイル)として用意されています。

ログ出力には [Trace](https://docs.microsoft.com/ja-
jp/dotnet/api/system.diagnostics.trace) を使うのはいかがでしょうか。  
実行ファイルはそのままで.configファイルを編集することによりファイルにログ出力できるようになります。[(参考)](https://csharp.keicode.com/topics/debug-
trace.php)

.configファイルは appSettings
を使用して独自のパラメータを実装することが可能ですので、例えばログ出力機能自体が重い場合、このパラメータを利用して機能のON/OFFを実装することが可能です。[(参考)](https://dobon.net/vb/dotnet/programing/appconfigfile.html)


CC BY-SA 4.0
2019-07-22T09:36:53.977
56813
2019-07-22T09:36:53.977
14817
56810
answer