C# 我可以使用TraceListener在initializeData中添加时间戳吗?

C# 我可以使用TraceListener在initializeData中添加时间戳吗?,c#,timestamp,tracelistener,C#,Timestamp,Tracelistener,是否可以在TraceListener上的“initializeData”中添加时间戳 大概是这样的: <sharedListeners> <add name="AppSourceListener" type="System.Diagnostics.DelimitedListTraceListener" initializeData="c:\test%date.csv" traceOutputOptions="Pro

是否可以在TraceListener上的“initializeData”中添加时间戳

大概是这样的:

<sharedListeners>
      <add name="AppSourceListener"
        type="System.Diagnostics.DelimitedListTraceListener" 
        initializeData="c:\test%date.csv" 
        traceOutputOptions="ProcessId, DateTime, Callstack">
      </add>      
</sharedListeners>


我想在启动应用程序后,在每个日志中输入DateTime.。

这在.config文件中是不可能的。要执行此操作,请从代码创建TraceListener:

//Remove all existing trace listeners
while (Trace.Listeners.Count > 0)
    Trace.Listeners.RemoveAt(0);
//Add the new one with new file name
Trace.Listeners.Add(new DelimitedListTraceListener(@"mylogwithdatetime.log"));

这在某种程度上是可能的。 将任何内容作为“initializeData”放入自定义跟踪侦听器的构造函数。如果你有这样的东西

namespace MyLogger
{
    public class DebugListener :TraceListener
    {
        string LogFileName;
        public DebugListener (string filename)
        {
            filename = filename.Replace("@date",DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString());
            LogFileName = filename;
        }
    }
}
和配置

<system.diagnostics>
  <trace autoflush="true" indentsize="4">
    <listeners>
      <add name="dbgListener" type="MyLogger.DebugListener,MyLogger" initializeData="MyLog@date.txt"/>
    </listeners>
  </trace>
</system.diagnostics>

重复。如果使用TraceXXX方法,则答案为“是”:
//get new log file name every month
string newFileName = string.Format("{0}_{1}{2}.txt","name",DateTime.UtcNow.Year.ToString(CultureInfo.InvariantCulture),DateTime.UtcNow.ToString("MM", CultureInfo.InvariantCulture))`;