我正在尝试编写一个简单的日志文件编写器,该编写器将在一个项目中的许多 .cpp 文件中使用。 到目前为止,这是代码:
enter code here
#include"log.h"
logger::logger()
{
m_outStream.open("LogFile");
m_outStream<<"********** LOG ENTRY STARTED **********"<<endl;
}
logger::~logger()
{
m_outStream.close();
}
void logger::logEntry(const char* filename, const unsigned long lineno, const char* str)
{
m_outStream<<"--> NAME: "<<filename<<" | LINE NUMBER : "<<lineno<<" | "<<str<<endl;
}
主要可以是这样的
main()
{
func1();
func2();
.
.
.
}
从 main 调用的函数可能会在其主体中调用其他函数。 现在,我如何或在哪里声明一个 logObject 以确保在每个函数内,我将有一个可用的 logObject,这将有助于我调用 logEntry()。
我想在某个地方公开它,我认为这对我的情况有意义,但我不确定这是否是一个好的做法。处理日志文件的对象应该是公共(public)的吗?有什么见解吗?
最佳答案
我建议使用单例模式来实现这一点。它经常用于全局功能,例如整个应用程序所需的日志记录。
每次需要记录某些内容时创建一个新实例是没有意义的,因此这就是为什么单例模式非常适合。它将在您第一次需要记录时创建一个实例,或者如果已经实例化则返回一个实例。
定义它后,您可以将其包含在需要使用它的任何地方(如果您遇到问题,请参阅第二个示例以了解如何包含它)。
请参阅first example here或this sample implementation如果您更喜欢,还可以引用this existing thread .
祝你好运!如果您需要更多信息,请告诉我。
关于c++ - 在哪里声明这个记录器对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29787366/