- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个解决方案,其中包含一个主要的 winforms 应用程序,以及我希望从中记录的相关内部编写的类库 dll。无论主 UI 客户端还是关联的 dll 调用 this.log 都应该由同一个记录器执行此日志记录。当然,dll 可能会被其他解决方案中具有不同记录器的其他应用程序使用,但在这些情况下将具有不同的 log4net 配置,并且可能完全不同的附加程序套件。
一种方法是在主应用程序中创建一个单例并从中记录日志,但是由于 log4net 是它自己的单例,只要我们将相同的字符串(或类型)传递给 log4net.LogManager.GetLogger
就可以引用它。我们将登录到同一个目的地(在我的情况下,我希望使用 RollingFileAppender)。
这有效。然而,鉴于 DLL 将有许多类,这意味着我们希望从中记录的每个类实例化或静态类都需要 i) 一个定义记录器名称的参数(以便记录到相同的目的地)和 ii)在每个入口点需要调用 log4net.LogManager.GetLogger(loggerName)
.
在这里使用的最佳模式是什么?正确的方法是在每个程序集中创建一个单例实例吗?我在这里担心的是,我们仍然需要将记录器名称传递给 dll 的每个入口点,这似乎有点矫枉过正。为了避免传入记录器名称,我可能假设它总是等于 System.Reflection.Assembly.GetCallingAssembly().GetName().Name
.
如果这对 log4net 来说太难了,是否还有其他更简单的解决方案,例如 Enterprise Logging Block?
或者最好的解决方案是面向方面的编程 (AOP) 方法?
Reference for anti-pattern approach for singleton here .
最佳答案
差不多一年后,但我想我无论如何都会做出贡献!
根据您对 Carl 帖子的评论,我认为您可能误解了 log4net 的工作原理。是的,loggername 确实可以识别记录器。是的,一个 logger 可以有很多 appender。但是,许多记录器也可以写入 SAME appender。因此,您可以将记录器“A”、“B”和“C”配置为将所有日志记录到文件“X”。你可以得到这样的记录器:
ILog logger_a = LogManager.GetLogger("A");
ILog logger_b = LogManager.GetLogger("B");
ILog logger_c = LogManager.GetLogger("C");
关于log4net - 在解决方案中的多个程序集中使用相同的 Log4net 记录器的最佳模式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1713043/
有没有办法配置 python 记录器来调用自定义函数并在它记录时将记录消息传递给它? 谢谢! 最佳答案 子类 logging.Handler 并实现 emit方法: import logging cl
我有一个这样的记录器设置: import logging from logging.handlers import RotatingFileHandler import sys # root logg
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
我一直在使用 Netbeans 作为 Java IDE 进行开发。当 Netbeans 在 try-catch block 中包含一条语句时,它在捕获区域中使用类似 Logger.getLogger(
我正在记下远程日志记录的功能从头开始构建时可能需要库。我查了这个:http://www.aggsoft.com/serial-data-logger.htm 我想知道a之间有什么区别远程日志记录库和远
我需要跟踪包含数千个 JAR 和 .CLASS 文件的已编译 Java 应用程序,您知道有什么合适的工具可以附加到 JVM 来跟踪函数调用(无需源代码)吗? 最佳答案 是的。 Jprofiler无需源
我想使用记录器并设置其属性,但不想在每个对象类中创建记录器,我的目标是:在Spring中创建一个bean,创建属性文件我如何使用注释,可以做到吗? 最佳答案 是的,你可以做到, 在你的
首先,我已经阅读了real python article on the subject . 了解到记录器具有层次结构后,我想在这样的层次结构中创建一个名为 MyProjectLogger 的新记录器:
我设置了一个记录器。像这样: def initLogger(self): self.logger = logging.getLogger('MyApp') if not self.lo
是否允许为您的日志创建一个静态类? public final class Log { public static final Logger LOGGER = Logger.getLogger(
我对 java.util.logging 有一些无法解释的行为。让我们看一下这两个示例: 首先: boolean var = false; log.log( Level.WARNING, "Cant
我正在尝试开始在 python 中使用日志记录并阅读了几篇博客。一个让我感到困惑的问题是是按功能还是按模块创建记录器。在这个Blog: Good logging practice in Python建
我正在使用 https://pub.dartlang.org/packages/logging ,但它不会在我的日志中显示任何内容。这是我的代码: class Test { final Logge
public static Logger getLogger() { final Throwable t = new Throwable(); final StackTraceElem
我是 Poco 的新手,我在 Poco 在线帮助中看到了以下示例: int main(int argc, char** argv) { AutoPtr pChannel(new SimpleF
我有一个带有函数、文档字符串和文档测试的 Julia 模块文件。我加载它并在 Julia 帮助中显示文档字符串,但 Documenter.jl 找不到文档字符串。 一个示例模块文件,src/my_mo
我正在尝试在我的 Django 项目( django 1.11 、 Python 3.6 )中实现日志记录。我正在使用默认的 django 记录器。 获取 username在日志中,我使用了 djan
是否可以有多个 serilog 记录器?目前,在我的 WebApi 中,我可以调用 Log.Information 来记录信息事件,但是有没有一种方法可以改为制作不同的日志并从我的 Controlle
我有一个 python 应用程序,其文件结构类似于以下内容: /Project file1.py file2.py file3.py ... 该应用程序使用 Pytho
如何访问 python Bokeh 记录器? 我尝试使用 basicConfig包装器,但它似乎不起作用。 from bokeh.util import logconfig logconfig.bas
我是一名优秀的程序员,十分优秀!