如何获取所有进程中当前运行的所有log4net loggers
How to obtain all log4net loggers currently running in all processes
我们系统中的每个进程都使用 log4net。其中许多进程都是作为服务启动的。其中一些 运行 应用程序非常冗长,会吐出调试条目,我们希望能够限制它们的输出。所有记录器都使用相同的 .config 文件来设置它们当前的日志记录级别。我正在开发一个应用程序,它将访问所有使用
设置源的记录器
log4net.GlobalContext.Properties["source"] = source;
我想做的是获取当前注册的所有记录器的列表,获取它们的源名称,然后更改每个源的 .config 文件以单独配置每个源的输出级别。
我遇到的问题是找到所有这些记录器的列表,因此我可以在 .config 文件中添加一个条目。有没有办法从单个应用程序获取所有进程的记录器列表?
我试过使用 GetRepository().GetCurrentLoggers()
,但只有 returns 当前调用应用程序的记录器。
没有标准的方法来获取其他进程中的记录器。你必须自己做点什么。
试试这个
using log4net.Repository.Hierarchy;
var appenders = ((Hierarchy)LogManager.GetRepository())
.Root.Appenders;
我们系统中的每个进程都使用 log4net。其中许多进程都是作为服务启动的。其中一些 运行 应用程序非常冗长,会吐出调试条目,我们希望能够限制它们的输出。所有记录器都使用相同的 .config 文件来设置它们当前的日志记录级别。我正在开发一个应用程序,它将访问所有使用
设置源的记录器log4net.GlobalContext.Properties["source"] = source;
我想做的是获取当前注册的所有记录器的列表,获取它们的源名称,然后更改每个源的 .config 文件以单独配置每个源的输出级别。
我遇到的问题是找到所有这些记录器的列表,因此我可以在 .config 文件中添加一个条目。有没有办法从单个应用程序获取所有进程的记录器列表?
我试过使用 GetRepository().GetCurrentLoggers()
,但只有 returns 当前调用应用程序的记录器。
没有标准的方法来获取其他进程中的记录器。你必须自己做点什么。
试试这个
using log4net.Repository.Hierarchy;
var appenders = ((Hierarchy)LogManager.GetRepository())
.Root.Appenders;