私のC#.NETアプリケーションでは、Trace.WriteLine()メソッドに問題があります。私はこのメソッドをたくさん使用しており、使用するたびにTimeStampを追加したいと思っています。
Trace.WriteLine(DateTime.Now + "何か問題があります!")の代わりに、DateTimeがデフォルトになっている解決策はありますか?
独自の「TraceLine(string msg)
」メソッドを記述して、呼び出しを開始するだけです。
void TraceLine(string msg, bool OmitDate)
{
if (!OmitDate)
msg = DateTime.Now + " " + msg;
Trace.WriteLine(msg);
}
void TraceLine(string msg) {TraceLine(msg, false);}
TraceOutputOptionsフラグ列挙型を構成できます。
var listener = new ConsoleTraceListener() { TraceOutputOptions = TraceOptions.Timestamp | TraceOptions.Callstack };
Trace.Listeners.Add(listener);
Trace.TraceInformation("hello world");
これはWriteおよびWriteLineでは機能しません。TraceXXXメソッドを使用しています。
これは、App.configで、ある程度同等のTraceSourceを使用して構成することもできます。
<configuration>
<system.diagnostics>
<trace autoflush="true">
<sources>
<source name="TraceSourceApp">
<listeners>
<add name="myListener" type="System.Diagnostics.ConsoleTraceListener" traceOutputOptions="Timestamp" />
</listeners>
</source>
</sources>
</trace>
</system.diagnostics>
</configuration>
そして、コードでは次のことができます。
private static TraceSource mySource =
new TraceSource("TraceSourceApp");
static void Main(string[] args)
{
mySource.TraceInformation("hello world");
}
traceOutputOptions
を使用して、すべてのトレースリスナーのタイムスタンプ(相対時間と現在の時間)を使用するようにapp.config
ファイルを設定できます。
traceOutputOptions = "DateTime, Timestamp";
あなたはそれをしたラッパーメソッドを書くことができます:
public static void DoTrace(string message)
{
DoTrace(message,true);
}
public static void DoTrace(string message, bool includeDate)
{
if (includeDate) {
Trace.WriteLine(DateTime.Now + ": " + message);
} else {
Trace.WriteLine(message);
}
}
前述のように、独自のTextWriterTraceListener
を書くことができます ここ 。
レイアウトやフィルタリングを簡単に構成できるlog4netTraceAppenderを使用しています。