Log4net 日志文件路径是否可以动态(定期)更改

Log4net 日志文件路径是否可以动态(定期)更改,log4net,Log4net,我一直在试验log4net,因为它似乎不支持我的项目所需的特定日志功能简而言之,我希望能够控制代码中的日志文件路径。此路径将不断更改。特定用例是一组文件系统监视程序,每个实例需要一个单独的日志文件 这能做到吗 我希望能够在代码中指定一个控制日志记录目标的变量 例如: var log4NetLogger1=新的Log4NetLogger(“LogFileAppender1”); log4NetLogger1.InformationEvent(“日志消息1”); var log4NetLogger2

我一直在试验log4net,因为它似乎不支持我的项目所需的特定日志功能简而言之,我希望能够控制代码中的日志文件路径。此路径将不断更改。特定用例是一组文件系统监视程序,每个实例需要一个单独的日志文件

这能做到吗

我希望能够在代码中指定一个控制日志记录目标的变量

例如:

var log4NetLogger1=新的Log4NetLogger(“LogFileAppender1”);
log4NetLogger1.InformationEvent(“日志消息1”);
var log4NetLogger2=新的Log4NetLogger(“LogFileAppender2”);
log4NetLogger2.InformationEvent(“日志消息2”);
在上面的示例中,我将向log4net包装器传递一个字符串,该字符串与配置中的appender名称匹配。其思想是log4net包装器通过GetLogger修改正在使用的appender来更改日志记录目标

\u log=log4net.LogManager.GetLogger(appenderName);
结果是创建了两个不同的日志文件,但日志消息同时写入这两个文件。似乎log4net配置的某些方面是全局的,我无法以这种方式动态更改日志路径

配置文件:


完整包装类:

使用系统;
使用log4net;
名称空间Log4NetRunner
{
公共枚举日志级别
{
信息
警告
错误
}
公共类Log4NetLogger
{
专用只读ILog_日志;
公共日志4NetLogger(类型)
{
如果(_log==null)
{
_log=log4net.LogManager.GetLogger(类型);
}
}
公共日志4NetLogger(字符串附录名称)
{
如果(_log==null)
{
_log=log4net.LogManager.GetLogger(appenderName);
}
}
公共无效FatalErrorEvent(字符串消息文本)
{
SendLog(messageText,LoggingLevel.Error);
}
公共无效警告事件(字符串messageText)
{
SendLog(messageText,LoggingLevel.Warning);
}
公共无效信息事件(字符串messageText)
{
SendLog(messageText,LoggingLevel.Information);
}
私有void SendLog(字符串messageText,日志级别logLevel)
{
ILog记录器=_log;
开关(日志级别)
{
案例记录级别。错误:
logger.Error(messageText);
打破
案例记录级别。警告:
logger.Warn(messageText);
打破
案例记录级别。信息:
logger.Info(messageText);
打破
违约:
logger.Error(“未知日志记录级别:“+messageText”);
打破
}
}
}
}

是的,它可以,您只需要使用配置的loggers部分