gpt4 book ai didi

c# - 在运行时更改 log4net 文件名而不更改附加程序

转载 作者:行者123 更新时间:2023-11-30 20:28:02 28 4
gpt4 key购买 nike

我想在运行时更改我的日志名称而不更改附加程序。基本上,一旦到了一天中的某个设定时间,我希望能够使用不同的文件。

这是我的 appender 的样子:

<appender name="info" type="log4net.Appender.RollingFileAppender">
<file value="logs\" />
<datePattern value="yyyyMMdd'_INFO.log'" />
<staticLogFileName value="false" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline[%date]-%level-%logger[%M]- Linea:%L - %message%newline"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO"/>
<param name="LevelMax" value="INFO"/>
</filter>
</appender>

这是我迭代附加程序的函数:

   public void SetLogFile(string fileName)
{
foreach (var appender in log.Logger.Repository.GetAppenders())
{
try
{
((log4net.Appender.FileAppender)appender).File = fileName;
((log4net.Appender.FileAppender)appender).ActivateOptions();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}

SetLogFile("log1.txt");

它为此特定示例创建以下文件:

log1.txt20171221_INFO.log

我希望我的日志文件被命名为 log1.txt 并且没有在 log4net.config 文件中设置 datePattern与名称连接,但我不知道如何在不更改 log4net.config appender 配置的情况下执行此操作。

最佳答案

当您使用 RollFileAppender 时,您必须更改 RollingStyle 并相应地设置路径。

foreach (var appender in log.Logger.Repository.GetAppenders())
{
try
{
string file = Path.GetDirectoryName(((log4net.Appender.RollingFileAppender)appender).File);
string filename = Path.Combine(file, fileName);

switch (((log4net.Appender.RollingFileAppender)appender).RollingStyle)
{
case log4net.Appender.RollingFileAppender.RollingMode.Date:
((log4net.Appender.RollingFileAppender)appender).RollingStyle = log4net.Appender.RollingFileAppender.RollingMode.Once;
break;
case log4net.Appender.RollingFileAppender.RollingMode.Composite:
((log4net.Appender.RollingFileAppender)appender).RollingStyle = log4net.Appender.RollingFileAppender.RollingMode.Size;
break;
}
((log4net.Appender.FileAppender)appender).File = filename;
((log4net.Appender.FileAppender)appender).ActivateOptions();
}
catch (Exception ex) {}
}

关于c# - 在运行时更改 log4net 文件名而不更改附加程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47930314/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com