这是可能的。无论您作为“ 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))`;