Tag: log4cxx

与库一起使用的不同记录器

我的问题涉及到库类的记录(库中使用的类),我们目前正在使用log4cxx但log4j库实现了相同的概念。 假设我有一个包含多个实体A,B和C的进程。它们中的每一个都使用许多不同的类和函数,在代码中明确分开。 A,B和C使用许多库类,函数,对象,资源,有时甚至是全局变量(遗留代码,我无能为力……) – 让我们称之为foo 记录A,B和C结果是性能问题 ,当我们将日志级别设置为调试时,日志会被破坏。 查看我们的系统后,我们得出了以下结论: 我们希望能够一次只更改其中一个类的调试级别(或者所有类,使用root) 当所有类型的foo打印到日志时,我们需要查看哪个实体称为A,B或C. 因为有很多foo我们希望能够为每个foo单独更改调试级别 foo应该被视为一个公共库,它不能直接依赖于A,B或C. A,B和C可能使用相同的foo实例(例如,我们的资源处理类的相同实例使用A,B和C),在日志中我们希望看到哪个类使用了foo 。 A可以使用B(或C),但我们不必在日志中看到它… 这是我们到目前为止所提出的 – A,B和C将有单独的记录器。 全局变量(保存在包含所有日志记录助手和包装器的不同库中)将始终保持当前日志报告。 每次实体开始处理它的逻辑时,它都会将全局变量设置为正确的记录器。 当foo想要向日志报告时,它会通过全局变量进行报告, 并将其名称(和上下文)添加到日志消息中 。 问题是,感觉必须有一些事情已经做到这一点,解决方案不会感觉干净,持有像这样的全局变量…… 我们在这里做错了吗? 有更好的解决方案吗?