我正在开发一个小型的C++ 11应用程序(一个SDL2游戏),我很难将一些面向对象的知识从PHP/Java"移植"到C++.例如,为了创建一个优雅的错误日志记录方法,我将创建一个包含各种适配器的类,并在那里集中日志记录.我已经用C++做过了,但我不知道我的类应该如何使用Logger该类.
在Java和PHP中,我将使用依赖注入,并将其Logger作为类成员变量.但在C++中,正确的方法是什么?我真的不认为静止会很好.
天啊.
对我来说,日志记录类似于日期/时间处理:基本情况是微不足道的,但是除了微不足道之外的任何事情都非常复杂:没有中间立场.
我建议您研究一个通用的日志记录库,如Pantheios或Boost.Log.
我之所以建议采用这种方法,而不是"自己动手",是因为我直接了解"采伐情况"如何:
这一切变得非常非常困难,日志记录类开始污染您的代码.
所以,就像我说的:基于我有限的经验,我鼓励你研究一下建议的库.
祝好运.
只是为了完整的帖子(详情请参阅页面).
琐碎案例:
#include <boost/log/trivial.hpp>
int main(int, char*[]) {
BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
BOOST_LOG_TRIVIAL(info) << "An informational severity message";
BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
BOOST_LOG_TRIVIAL(error) << "An error severity message";
BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
一种方法是在函数调用周围传递对记录器对象的引用。然而,日志记录是应用程序逻辑的一种正交方面,因此显式传递该记录器并将其作为成员很快就会变得很麻烦,并且只会增加人为的复杂性。
我更喜欢在应用程序中拥有一个全局记录器。模块可以创建自己的记录器作为主记录器的子记录器,形成层次结构(我认为这类似于 Python 日志记录模块),并在必要时独立控制其输出接收器和详细程度。
| 归档时间: |
|
| 查看次数: |
3148 次 |
| 最近记录: |