C++ 如何将ostream重定向到Boost日志库

C++ 如何将ostream重定向到Boost日志库,c++,boost,C++,Boost,我有一个进度条函数,它将std::ostream作为参数。为了便于描述,我在这里对其进行了简化 void someprogressbar(std::ostream & stream) { stream << "Hello"; } void someprogressbar(std::ostream&stream) { stream为了通过ostream将输出重定向到Boost记录器,我需要使用Boost Iostreams库创建一个接收器。感谢@sehe的提示 我在以

我有一个进度条函数,它将std::ostream作为参数。为了便于描述,我在这里对其进行了简化

void someprogressbar(std::ostream & stream)
{
    stream << "Hello";
}
void someprogressbar(std::ostream&stream)
{

stream为了通过ostream将输出重定向到Boost记录器,我需要使用Boost Iostreams库创建一个接收器。感谢@sehe的提示

我在以下实现中使用C++11:

#include <iosfwd>
#include <boost/iostreams/categories.hpp>

class Logger_Sink
{
public:

    typedef char char_type;
    typedef boost::iostreams::sink_tag category;

    Logger_Sink() = default;

    virtual
    ~Logger_Sink() = default;

    virtual
    std::streamsize
    write(
            char_type const * s,
            std::streamsize   n) = 0;
};

class cout_Sink: public Logger_Sink
{
public:

    std::streamsize
    write(
            char_type const * s,
            std::streamsize   n)
    {
        BOOST_LOG_TRIVIAL(info) << std::string(s, n);
        return n;
    }
};
#包括
#包括
类记录器U接收器
{
公众:
typedef char_类型;
typedef boost::iostreams::sink_标记类别;
记录器_Sink()=默认值;
事实上的
~Logger_Sink()=默认值;
事实上的
std::streamsize
写(
字符类型常量*s,
std::streamsize n)=0;
};
类cout\u Sink:公共记录器\u Sink
{
公众:
std::streamsize
写(
字符类型常量*s,
标准::流大小(n)
{

BOOST_LOG_little(信息)编写一个整洁的小streambuf(BOOST Iostream接收器),并将其实现为写入BOOST日志。(这可能已经由某人实现了)我仍在努力理解汇。我设置了一个全局Boost logger,它可以打印到控制台和多个文件。我需要挂接这个streambuf吗?你能给我指一个教程或一个例子吗?我还没有找到一个实现我所需的示例。好的,我找到了解决方法。我将发布一个答案lat呃。
#include <iostream>
#include <boost/iostreams/stream.hpp>
namespace io = boost::iostreams;

io::stream_buffer<cout_Sink> cout_buf((cout_Sink()));

std::ostream mycout(&cout_buf);