【问题标题】:Can I put a timestamp in initializeData using TraceListener?我可以使用 TraceListener 在 initializeData 中添加时间戳吗?
【发布时间】:2016-04-08 08:29:00
【问题描述】:

是否可以在 TraceListener 的“initializeData”中放置时间戳?

类似这样的:

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

一旦启动应用程序,我想将 DateTime.Now 放入每个日志中。

【问题讨论】:

标签: c# timestamp tracelistener


【解决方案1】:

这在 .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"));

【讨论】:

    【解决方案2】:

    这可以通过一种方式实现。 无论您以“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>
    

    然后你会得到文件名 MyLog20173.txt 尽管请记住构造函数只会被调用一次,并且您必须重新启动应用程序才能创建新日志,但是您始终可以在代码中处理该逻辑,例如每月创建一个新日志文件的代码

    //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))`;
    

    【讨论】:

      猜你喜欢
      • 2017-06-02
      • 2023-01-14
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      • 2015-08-31
      • 2020-02-11
      • 2023-02-15
      • 1970-01-01
      相关资源
      最近更新 更多