首页 > 解决方案 > Log4Net 多租户

问题描述

我已经阅读了很多 StackOverflow 问题并尝试了多个选项。我每个租户都有不同的数据库,并且正在尝试使用特定数据库的附加程序获取 ILog。我已经使用正确的数据库连接字符串成功创建了一个 AdoNetAppender 并将其放入 log4net 存储库根目录。

但是,当我向 LogManager 询问新的 ILog 时,它给了我一个没有附加程序的 ILog。如果我查看 ILog 实例的父级根,它具有我添加的 AdoNetAppender。我究竟做错了什么?

Hierarchy h = (Hierarchy)LogManager.GetRepository();
var adoAppender = Log4NetAdoAppenderHelper.LoadADONetAppender(service.GetBoxDbConnectionString());
h.Root.AddAppender(adoAppender);
log4net.Config.BasicConfigurator.Configure(h);

//Neither of these work to get an appender on the ILog (_logger1 or _logger2)
var _logger1 = log4net.LogManager.GetLogger("log4net-default-repository", "AdoNetAppender");
var _logger2 = log4net.LogManager.GetRepository().GetLogger(typeof(AdoNetAppender).FullName);

我已经广泛研究并尝试过的一些 StackOverflow Q/As 代码是: log4net - 获取特定于一个记录器的附加程序

如何从头开始以编程方式配置 log4net(无配置)

从代码而不是配置启用 log4net 的文件日志记录

在每次应用程序启动时在代码滚动中配置 log4net RollingFileAppender

我不确定为什么 LogManager 没有将配置的 AdoNetAppender 添加到它给我的 ILog 对象中,并且无法找到有关该功能的更多信息。

标签: log4net

解决方案


推荐阅读