2009年8月23日日曜日

Trace.WriteLine("オレはどこに出力されるんだYo?");

Mono で System.Diagnostics.Trace.WriteLine メソッド使用時の Trace ログ出力先についてのメモ。

共通事項

コンパイルオブション -d:TRACE を指定。

$ gmcs -d:TRACE foo.cs

Console、WinForm、GTK# アプリ内で使用

方法1:app.config(foo.exe.config)ファイルで設定

 Trace ログファイルパスの指定:
  1. <configuration>  
  2. ...  
  3.   <system.diagnostics>  
  4.     <assert logfilename="/path/to/trace.log"/>  
  5.   </system.diagnostics>  
  6. ...  
  7. </configuration>  
方法2:環境変数 MONO_TRACE_LISTENER で設定

 Trace ログファイルパスの指定:
  1. export MONO_TRACE_LISTENER="/path/to/trace.log"  
標準または標準エラー出力の指定:
  1. export MONO_TRACE_LISTENER="Console.Out:Foo : "  
"[Console.Out|Console.Error]:prefix"
 Console.Out:標準出力
 Console.Error:標準エラー出力
 prefix:出力ログの前に付ける文字列
方法1、2両方とも設定した場合、両方の設定が有効。

ASP.NET Webアプリ内で使用

Web.config ファイルで設定

 Trace ログファイルパスの指定:
  1. <configuration>  
  2. ...  
  3.   <system.diagnostics>  
  4.     <trace autoflush="true">  
  5.       <listeners>  
  6.         <add name="FooTracer"  
  7. type="System.Diagnostics.TextWriterTraceListener, System, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"  
  8. initializeData="/path/to/trace.log" />  
  9.       </listeners>  
  10.     </trace>  
  11.   </system.diagnostics>  
  12. ...  
  13. </configuration>  

参考


ということで、Apache 2.2 + mod_mono 2.4.2 on Ubuntu 9.04 で当初、「/etc/apache2/envvars」に MONO_TRACE_LISTENER の設定を記述してたけど、この記述は無効なので、この部分を削除。

0 件のコメント:

コメントを投稿