代码之家  ›  专栏  ›  技术社区  ›  whoami

未创建日志文件

  •  0
  • whoami  · 技术社区  · 6 年前

    我在下面的链接中使用这个例子。

    https://www.boost.org/doc/libs/1_57_0/libs/log/doc/html/log/detailed/utilities.html#log.detailed.utilities.setup.settings_file

    #include "stdafx.h"
    #include <iostream>
    #include <fstream>
    
    #include <boost/log/core.hpp>
    #include <boost/log/trivial.hpp>
    #include <boost/log/expressions.hpp>
    #include <boost/log/utility/setup/file.hpp>
    #include <boost/log/utility/setup/common_attributes.hpp>
    #include <boost/log/utility/setup/from_stream.hpp>
    #include <boost/log/utility/setup/settings.hpp>
    #include <boost/log/utility/setup/from_settings.hpp>
    #include <boost/regex.hpp>
    
    namespace logging = boost::log;
    namespace keywords = boost::log::keywords;
    #define BOOST_LOG_DYN_LINK 1
    
    
    int main(int, char*[])
    {
        //init_logging();
        std::ifstream file("settings.ini");
        logging::init_from_stream(file);
    
        BOOST_LOG_TRIVIAL(trace) << "This is a trace severity message";
        BOOST_LOG_TRIVIAL(debug) << "This is a debug severity message";
        BOOST_LOG_TRIVIAL(info) << "This is an informational severity message";
        BOOST_LOG_TRIVIAL(warning) << "This is a warning severity message";
        BOOST_LOG_TRIVIAL(error) << "This is an error severity message";
        BOOST_LOG_TRIVIAL(fatal) << "and this is a fatal severity message";
    
        return 0;
    }
    

    我的设置.ini文件如下所示。

    # Logging core settings section. May be omitted if no parameters specified within it.
    [Core]
    DisableLogging=false
    Filter="%Severity% > 3"
    
    # Sink settings sections
    [Sinks.MySink1]
    
    # Sink destination type
    Destination=TextFile
    FileName="MyApp.log"
    RotationSize=1024
    
    # Formatter string. Optional, by default only log record message text is written.
    Format="<%TimeStamp%> - %Message%"
    
    # The flag shows whether the sink should be asynchronous
    Asynchronous=false
    

    但是,没有创建任何文件。我做错什么了?

    1 回复  |  直到 6 年前
        1
  •  6
  •   sehe    6 年前

    在添加过滤器之前,一切正常:

     Filter="%Severity% > 3"
    

    搜索一下(通过 Boost.Log Configuration Files e、 g.)我发现:

    如何使用init\u from \u settings()配置严重性\u记录器以获取

    您必须向 这包括严重性级别枚举。

    logging::register_simple_filter_factory<logging::trivial::severity_level>("Severity");
    

    现在,修复过滤器表达式以使用文本表示:

    Filter="%Severity% > debug"
    

    need to add the TimeStamp attribute to core :

    logging::core::get()->add_global_attribute("TimeStamp", logging::attributes::local_clock());
    

    现在一切正常了:

    #include <fstream>
    #include <iostream>
    
    #include <boost/log/attributes.hpp>
    #include <boost/log/core.hpp>
    #include <boost/log/expressions.hpp>
    #include <boost/log/trivial.hpp>
    #include <boost/log/utility/setup/common_attributes.hpp>
    #include <boost/log/utility/setup/file.hpp>
    #include <boost/log/utility/setup/from_settings.hpp>
    #include <boost/log/utility/setup/from_stream.hpp>
    #include <boost/log/utility/setup/settings.hpp>
    #include <boost/regex.hpp>
    
    namespace logging = boost::log;
    namespace keywords = boost::log::keywords;
    #define BOOST_LOG_DYN_LINK 1
    
    int main(int, char *[]) {
        std::ifstream file("settings.ini");
        logging::core::get()->add_global_attribute("TimeStamp", logging::attributes::local_clock());
        logging::register_simple_filter_factory<logging::trivial::severity_level>("Severity");
    
        logging::init_from_stream(file);
    
        BOOST_LOG_TRIVIAL(trace) << "This is a trace severity message";
        BOOST_LOG_TRIVIAL(debug) << "This is a debug severity message";
        BOOST_LOG_TRIVIAL(info) << "This is an informational severity message";
        BOOST_LOG_TRIVIAL(warning) << "This is a warning severity message";
        BOOST_LOG_TRIVIAL(error) << "This is an error severity message";
        BOOST_LOG_TRIVIAL(fatal) << "and this is a fatal severity message";
    }
    

    <2018-09-01 00:36:11.972436> - This is an informational severity message
    <2018-09-01 00:36:11.972712> - This is a warning severity message
    <2018-09-01 00:36:11.972735> - This is an error severity message
    <2018-09-01 00:36:11.972747> - and this is a fatal severity message
    

    补充 Demo Live On Coliru