web-dev-qa-db-ja.com

Trace.WriteLine()にタイムスタンプを追加します

私のC#.NETアプリケーションでは、Trace.WriteLine()メソッドに問題があります。私はこのメソッドをたくさん使用しており、使用するたびにTimeStampを追加したいと思っています。

Trace.WriteLine(DateTime.Now + "何か問題があります!")の代わりに、DateTimeがデフォルトになっている解決策はありますか?

24
Soren Mikkelsen

独自の「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);}
2
Joel Coehoorn

コード経由

TraceOutputOptionsフラグ列挙型を構成できます。

var listener = new ConsoleTraceListener() { TraceOutputOptions = TraceOptions.Timestamp | TraceOptions.Callstack };
Trace.Listeners.Add(listener);

Trace.TraceInformation("hello world");

これはWriteおよびWriteLineでは機能しません。TraceXXXメソッドを使用しています。

App.config経由

これは、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");
}
83
user38309

traceOutputOptionsを使用して、すべてのトレースリスナーのタイムスタンプ(相対時間と現在の時間)を使用するようにapp.configファイルを設定できます。

traceOutputOptions = "DateTime, Timestamp";
19
johara56

あなたはそれをしたラッパーメソッドを書くことができます:

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);
    }
}
1
Lloyd

前述のように、独自のTextWriterTraceListenerを書くことができます ここ

0
tm1

レイアウトやフィルタリングを簡単に構成できるlog4netTraceAppenderを使用しています。

0
Kai Wang