在C++中,没有事实上的标准日志记录工具。根据我的经验,商店也会推出自己的产品。然而,当试图创建可重用的软件组件时,这会产生一些问题。如果您的系统中的一切都依赖于日志组件,这将降低软件的可重用性,基本上会迫使任何下游项目使用您的日志框架以及他们真正想要的组件。
IOC (依赖注入)并不能真正解决这个问题,因为您的组件需要依赖于日志记录抽象。日志记录组件本身可能会添加对文件I/O、触发机制和其他可能不需要的依赖关系的依赖关系。
向您的专有日志记录框架添加依赖项是否会牺牲组件的可重用性?
我正在开发一个混合C++和Python的模块,通过Cython连接。C++代码包含简单的日志记录功能,可将日志语句打印到控制台。当通过Python或IPython命令行使用该模块时,可以正确打印日志语句。但是,该模块主要用于IPython HTML Notebook。在notebook中,不会出现日志语句。我该如何解决这个问题呢?
我们的项目使用宏在一行语句中简化日志记录,如下所示:
DEBUG_LOG(TRACE_LOG_LEVEL, "The X value = " << x << ", pointer = " << *x);
宏将第二个参数转换为字符串参数,并将其发送到常规的C++记录器。这在实践中效果很好,因为它使多参数日志记录语句非常简洁。然而,Scott Meyer说过,在中,“通过使用内联函数的模板,您可以获得宏的所有效率以及常规函数的所有可预测行为和类型安全”(第2条)。我知道在C++中使用宏有许多与可预测行为相关的问题,所以我正在尝试在
我多次看到这样的错误日志:
System.out.println("Method aMethod with parameters a:"+a+" b: "+b);
print("Error in line 88");
所以..。记录错误的最佳实践是什么?
编辑:
这是java,但可以是C/C++、basic等。