Log simultâneo no console e arquivo usando o Boost

Preciso de ajuda para inicializar a estrutura de log de impulso para fazer logon simultaneamente em um arquivo de log nomeado e também no console - (o arquivo de log nomeado não exigirá rotação periódica ou qualquer uma dessas configurações sofisticadas de acordo com muitos dos tutoriais de boost).

O texto do log deve ir para os dois coletores (arquivo e console) simultaneamente, no entanto, preciso formatar a saída do console de maneira um pouco diferente, pois será exibida por um usuário. Consegui obter o básico do log em 2 pias separadas trabalhando usando oimpulsionar código de exemplo. É muito complexo para o que eu preciso fazer e é realmente confuso no que diz respeito ao acesso ao criador de logs apropriado. Tudo o que preciso fazer é enviar mensagens com carimbo de data e hora para o arquivo de log e ter as mesmas informações sem os carimbos de data / hora ou novas linhas enviadas ao log do console (inserindo novas linhas explicitamente apenas como faria normalmente com << std :: operações finais de streaming). Eu realmente gostaria de manter a estrutura de registro do boost, pois ela oferece flexibilidade para expandir no futuro.

Com o exemplo, tentei alterar os arquivos de log - no entanto, a saída do log não parece ser liberada automaticamente após cada entrada de log. Embora isso não seja muito importante para os logs de arquivos, isso seria crítico para o fluxo de saída do console, pois representa a atividade ao vivo que um usuário monitorará.

Qualquer ajuda ou, melhor ainda, algum código de exemplo realmente simples para obter o básico funcionando, será muito apreciado.

A maneira como eu configuro meu log (conforme o link acima) é mostrada abaixo. Gostaria de substituir um desses coletores registrados por um logger de console - mas não sei como. Espero que um registrador de console tenha a liberação automática.

// Setup the common formatter for all sinks
logging::formatter fmt = expr::stream
    << std::setw(6) << std::setfill('0') << line_id << std::setfill(' ')
    << ": <" << severity << ">\t"
    << expr::if_(expr::has_attr(tag_attr))
    [
        expr::stream << "[" << tag_attr << "] "
    ]
<< expr::smessage;

// Initialize sinks
typedef sinks::synchronous_sink<sinks::text_ostream_backend> text_sink;
boost::shared_ptr<text_sink> sink = 
    boost::make_shared<text_sink>();
sink->locked_backend()->add_stream(
    boost::make_shared<std::ofstream>(
        "full.log"));
sink->set_formatter(fmt);
// register the full log sink
logging::core::get()->add_sink(sink);

sink = boost::make_shared<text_sink>();
sink->locked_backend()->add_stream(
    boost::make_shared<std::ofstream>(
        "important.log"));
//    sink->set_formatter(fmt); (I removed this to not have any special formatting hopefully)
sink->set_filter(severity >= warning || 
    (expr::has_attr(tag_attr) && 
    tag_attr == "IMPORTANT_MESSAGE"));
// register the important log sink
logging::core::get()->add_sink(sink);
// Add attributes
logging::add_common_attributes();

questionAnswers(1)

yourAnswerToTheQuestion