我可以使用 TraceListener 在 initializeData 中放置时间戳吗?
Can I put a timestamp in initializeData using TraceListener?
可以在 TraceListener 的 "initializeData" 中放置时间戳吗?
像这样:
<sharedListeners>
<add name="AppSourceListener"
type="System.Diagnostics.DelimitedListTraceListener"
initializeData="c:\test%date.csv"
traceOutputOptions="ProcessId, DateTime, Callstack">
</add>
</sharedListeners>
一旦启动应用程序,我想将 DateTime.Now 放入每个日志中。
这在 .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>
然后你会得到文件名 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))`;
可以在 TraceListener 的 "initializeData" 中放置时间戳吗?
像这样:
<sharedListeners>
<add name="AppSourceListener"
type="System.Diagnostics.DelimitedListTraceListener"
initializeData="c:\test%date.csv"
traceOutputOptions="ProcessId, DateTime, Callstack">
</add>
</sharedListeners>
一旦启动应用程序,我想将 DateTime.Now 放入每个日志中。
这在 .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>
然后你会得到文件名 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))`;