gpt4 book ai didi

dynamic - log4net:如何动态设置记录器文件名?

转载 作者:行者123 更新时间:2023-12-03 23:45:55 33 4
gpt4 key购买 nike

这是一个非常普遍的问题,但我无法获得工作上的答案。这是我的配置文件:

<?xml version="1.0" encoding="utf-8"?>
<log4net>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="CraneUserInterface.log" />
<appendToFile value="true" />
<maxSizeRollBackups value="90" />
<rollingStyle value="Size" />

<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date - %message%newline" />
</layout>
</appender>

<root>
<level value="DEBUG" />
<appender-ref ref="RollingFile" />
</root>


但是我需要在运行时确定实际的日志文件名。我找到了一个很好的示例 here,但是当我尝试遍历GetIterators()调用返回的集合时,发现该集合为空。

我需要将名称“ CraneUserInterface.log”更改为“ CraneUserInterface_1.log”或2或3,具体取决于程序在运行时读取的内容。我怎样才能做到这一点?

这是我使用该示例中提供的代码的第一步:

static bool ChangeLogFileName(string AppenderName, string NewFilename)
{
// log4net.Repository.ILoggerRepository RootRep;
// RootRep = log4net.LogManager.GetRepository();
log4net.Repository.ILoggerRepository RootRep = m_logger.Logger.Repository;
foreach (log4net.Appender.IAppender iApp in RootRep.GetAppenders())
{
string appenderName = iApp.Name;
if (iApp.Name.CompareTo(AppenderName) == 0
&& iApp is log4net.Appender.FileAppender)
{
log4net.Appender.FileAppender fApp = (log4net.Appender.FileAppender)iApp;
fApp.File = NewFilename;
fApp.ActivateOptions();
return true; // Appender found and name changed to NewFilename
}
}
return false; // appender not found
}


非常感谢!

最佳答案

如何使用“%property”为文件名定义一个动态“标签”(在运行时)?

<file type="log4net.Util.PatternString" value="~/App_Data/%property{LogName}" />


在这里解释: Best way to dynamically set an appender file path

关于dynamic - log4net:如何动态设置记录器文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17560396/

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