C++ 定制;“流动的”;输出

C++ 定制;“流动的”;输出,c++,inheritance,logging,filestream,filebuf,C++,Inheritance,Logging,Filestream,Filebuf,我必须扩展ofstream类来编写日志流服务 目标是截取每一行,在每一行的开头添加一个自定义文本(日期/时间、严重性等) 现在,很明显我不是C++大师,所以我读了很多关于这个任务的文档,例如 上面的文章建议编写一个自定义流缓冲区,但是在将这个概念移植到文件流的过程中,我遇到了很多困难 有没有更简单的方法来实现这个目标?您不需要编写自定义流缓冲区;最简单、最直接的方法是创建一个可以向其发送输出的类,方法是给它一个模板化的单参数运算符。我建议只需围绕std::ofstream进行包装。这意味着

我必须扩展ofstream类来编写日志流服务

目标是截取每一行,在每一行的开头添加一个自定义文本(日期/时间、严重性等)

现在,很明显我不是C++大师,所以我读了很多关于这个任务的文档,例如


上面的文章建议编写一个自定义流缓冲区,但是在将这个概念移植到文件流的过程中,我遇到了很多困难


有没有更简单的方法来实现这个目标?

您不需要编写自定义流缓冲区;最简单、最直接的方法是创建一个可以向其发送输出的类,方法是给它一个模板化的单参数运算符。我建议只需围绕std::ofstream进行包装。这意味着您将创建一个包含std::ofstream成员的类。在以前阅读本主题时,我发现一个答案现在已删除:!!!您好,我正在使用您的模板扩展myy logger类,但是当我链接应用程序时,会出现如下错误:
“error LNK2001:unresolved external symbol”public:class std::basic\u ostream&\u thiscall logger::operator
template <typename T>
std::ostream& operator<<(const T& data_)
{
    m_outstream << m_severity << "\t" << getTimeStamp() << "\t" << data_;

    return m_outstream;
}
myLogger << "failingFunction(" << argument <<
            "): Could not do something." << std::endl;