我有一些与数据库相关的功能,我不会单独记录。可以说,我启动与数据库相关的进程,对于每个进程,我需要一个名称为Processing_DB_DateTime
的不同日志文件。
我只找到了如何配置log4net,以便为每个应用程序运行创建新的日志文件:
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="App-%date{yyyy-MM-dd_HH-mm-ss}.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%2thread] %-5level - %message%newline" />
</layout>
</appender>
<logger additivity="false" name="LogFileAppender">
<level value="DEBUG"/>
<appender-ref ref="LogFileAppender" />
</logger>
我可以用代码获取它:
LogManager.GetLogger(name)
有没有办法告诉log4net在需要时创建新文件?
答案 0 :(得分:1)
您可以使用下面提到的代码
Log4NetInitializer.init();
log4net.Repository.Hierarchy.Hierarchy h = (log4net.Repository.Hierarchy.Hierarchy)log4net.LogManager.GetRepository();
foreach (IAppender a in h.Root.Appenders)
{
if (a.Name == "rollingFile")
{
FileAppender fa = (FileAppender)a;
string path = System.Configuration.ConfigurationManager.AppSettings["LogFilePath"] + "\\" + DateTime.Now.ToString("ddMMyyyy") + ".txt";
fa.File = path;
fa.ActivateOptions();
break;
}
}