相关疑难解决方法(0)

提升日志文件未写入

我一直在努力使用boost日志 - 我得到了他们写一个日志文件的简单示例(http://boost-log.sourceforge.net/libs/log/example/doc/tutorial_file.cpp).但是,当我尝试将该代码复制到"Logger"类时,我无法将其写入日志文件.我可以看到文件default.log被创建,但它没有任何内容.

我在debian 7 64bit上.一切都编译好 - 编译行是:

g++ -o build/Logger.o -c -std=c++11 -Wall -g -O0 -DBOOST_LOG_DYN_LINK -DDEBUG src/Logger.cpp
g++ -o build/logtest build/Logger.o -lboost_log -lboost_log_setup -lboost_date_time -lboost_thread -lboost_wave -lboost_regex -lboost_program_options
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

Logger.cpp

/*
 * Logger.cpp
 *
 *  Created on: 2011-01-17
 *      Author: jarrett
 */

#include "Logger.h"

namespace logging = boost::log;
namespace sinks = boost::log::sinks;
namespace src = boost::log::sources;
namespace expr = boost::log::expressions;
namespace attrs = boost::log::attributes;
namespace keywords = boost::log::keywords;

namespace dhlogging {

Logger::Logger(std::string fileName)
{ …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-log

16
推荐指数
1
解决办法
6970
查看次数

提升日志severity_logger init_from_stream

我正在使用boost 1.54.0.您可以在下面找到说明我的问题的最小示例.

我使用boost日志的severity_logger.我想从流中配置我的接收器.(在下面的示例中,我使用了一个字符串流.在我的实际应用程序中,流来自一个文件.)我想使用%Severity%来输出或过滤.

我的问题是:如果我在下面的例子中给出它,%Severity%为空.

%LineID%和%Message%按预期填充.如果我在outcommented行中设置了一个接收器,它会按预期工作.

有任何想法吗?

#include <boost/log/sources/severity_logger.hpp>
#include <boost/log/sources/record_ostream.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>
#include <boost/log/utility/setup/from_stream.hpp>
#include <boost/log/utility/setup/console.hpp>
#include <boost/log/expressions.hpp>

enum SeverityLevel { trace, fatal };

int main (int argc, char *argv[])
{
    boost::log::add_common_attributes();
    /*
    struct severity_tag;
    boost::log::add_console_log(std::clog,
        boost::log::keywords::format = (
            boost::log::expressions::stream
                << boost::log::expressions::attr< unsigned int >("LineID")
                << ": <" << boost::log::expressions::attr<SeverityLevel, severity_tag >("Severity")
                << "> " << boost::log::expressions::smessage)
    ); */

    std::stringstream s;
    s << "[Sinks.MySink]" << std::endl;
    s << "Destination=Console" << std::endl;
    s << "Format=\"%LineID%: <%Severity%> - %Message%\"" …
Run Code Online (Sandbox Code Playgroud)

c++ logging boost boost-log

11
推荐指数
1
解决办法
3310
查看次数

在Boost Log中,如何使用格式字符串格式化自定义severity_level?

我在我的C++程序中使用boost log,并且我severity_logger< severity_level >使用了我定义的severity_level枚举.然后我用格式字符串创建我的日志接收器,"%TimeStamp% [%ThreadID%] %Severity% %Module% - %Message%"但它没有显示我所拥有的严重性,%Severity%而是在该位置只是空白.例如,2013-07-29 10:31 [0xDEADBEEF] my.Module - Hello World.我需要在格式字符串中执行哪些操作才能显示严重性级别?

这是我的代码的一部分:

#define NUM_SEVERITY_LEVELS 6
enum severity_level
{ 
  // These are deliberately the same levels that log4j uses
  trace = 0,
  debug = 1,
  info = 2,
  warning = 3,
  error = 4,                  
  fatal = 5                   
};  

typedef src::severity_logger< severity_level > logger_t;

const char* severity_level_str[NUM_SEVERITY_LEVELS] = {
  "TRACE",
  "DEBUG",
  "INFO",
  "WARNING",
  "ERROR",
  "FATAL" 
};

template< typename CharT, typename …
Run Code Online (Sandbox Code Playgroud)

boost boost-log

7
推荐指数
1
解决办法
2599
查看次数

标签 统计

boost ×3

boost-log ×3

c++ ×2

logging ×1