问题标签 [boost-log]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
435 浏览

windows - 安装 boost.log (windows 7 使用代码块 12.11+gcc 4.7.1)

我正在尝试在 CodeBlocks 12.11 上构建和运行 Boost.Log 库。我没有使用 boost 和 boost.log 的经验,并且想学习它,所以首先我需要安装它。

安装升压

首先,我按照有关如何使用代码块安装 boost 的步骤进行操作

结果在两台不同的计算机上(都有 Windows 7)我在 %mypath%\boost\lib 中得到了不同的文件列表(在一台计算机上只有 6 个文件,在另外 52 个)

更大的清单是:

  • libboost_chrono-mgw47-mt-1_52.a
  • libboost_chrono-mgw47-mt-d-1_52.a
  • libboost_date_time-mgw47-mt-1_52.a
  • libboost_date_time-mgw47-mt-d-1_52.a
  • libboost_exception-mgw47-mt-1_52.a
  • libboost_exception-mgw47-mt-d-1_52.a
  • libboost_filesystem-mgw47-mt-1_52.a
  • libboost_filesystem-mgw47-mt-d-1_52.a
  • libboost_graph-mgw47-mt-1_52.a
  • libboost_graph-mgw47-mt-d-1_52.a
  • libboost_iostreams-mgw47-mt-1_52.a
  • libboost_iostreams-mgw47-mt-d-1_52.a
  • libboost_locale-mgw47-mt-1_52.a
  • libboost_locale-mgw47-mt-d-1_52.a
  • libboost_math_c99-mgw47-mt-1_52.a
  • libboost_math_c99-mgw47-mt-d-1_52.a
  • libboost_math_c99f-mgw47-mt-1_52.a
  • libboost_math_c99f-mgw47-mt-d-1_52.a
  • libboost_math_c99l-mgw47-mt-1_52.a
  • libboost_math_c99l-mgw47-mt-d-1_52.a
  • libboost_math_tr1-mgw47-mt-1_52.a
  • libboost_math_tr1-mgw47-mt-d-1_52.a
  • libboost_math_tr1f-mgw47-mt-1_52.a
  • libboost_math_tr1f-mgw47-mt-d-1_52.a
  • libboost_math_tr1l-mgw47-mt-1_52.a
  • libboost_math_tr1l-mgw47-mt-d-1_52.a
  • libboost_prg_exec_monitor-mgw47-mt-1_52.a
  • libboost_prg_exec_monitor-mgw47-mt-d-1_52.a
  • libboost_program_options-mgw47-mt-1_52.a
  • libboost_program_options-mgw47-mt-d-1_52.a
  • libboost_random-mgw47-mt-1_52.a
  • libboost_random-mgw47-mt-d-1_52.a
  • libboost_regex-mgw47-mt-1_52.a
  • libboost_regex-mgw47-mt-d-1_52.a
  • libboost_serialization-mgw47-mt-1_52.a
  • libboost_serialization-mgw47-mt-d-1_52.a
  • libboost_signals-mgw47-mt-1_52.a
  • libboost_signals-mgw47-mt-d-1_52.a
  • libboost_system-mgw47-mt-1_52.a
  • libboost_system-mgw47-mt-d-1_52.a
  • libboost_test_exec_monitor-mgw47-mt-1_52.a
  • libboost_test_exec_monitor-mgw47-mt-d-1_52.a
  • libboost_thread-mgw47-mt-1_52.a
  • libboost_thread-mgw47-mt-d-1_52.a
  • libboost_timer-mgw47-mt-1_52.a
  • libboost_timer-mgw47-mt-d-1_52.a
  • libboost_unit_test_framework-mgw47-mt-1_52.a
  • libboost_unit_test_framework-mgw47-mt-d-1_52.a
  • libboost_wave-mgw47-mt-1_52.a
  • libboost_wave-mgw47-mt-d-1_52.a
  • libboost_wserialization-mgw47-mt-1_52.a
  • libboost_wserialization-mgw47-mt-d-1_52.a

它与 bjam 消息一起安装:

该列表是否已满,或者我安装的 boost 错过了一些库?为什么两台不同的计算机会对相同的操作给出不同的结果(我两次从链接执行相同的步骤)?(只有 6 个结果库的比较没有 VC2010,有 52 个库的比较有 VC2010,这可能是原因吗?)

安装 boost.log

然后,在有 52 个库的机器上,我开始按照如何安装 boost.log 的步骤安装 boost.log

并获得了两个额外的库:

  • libboost_log_setup-mgw47-mt-1_52.a(大小 22733 kb)
  • libboost_log_setup-mgw47-mt-d-1_52.a(大小 74933 kb)

来自 bjam 的下一条结果消息:

然后我从 boost.log 发行版中取样:

将库添加到项目(以及包含文件的路径):还有 libboost_log_setup-mgw47-mt-d-1_52.a

但是在编译时出现以下错误:

并且不知道如何解决它们。

请解释一下(如果可能的话):

  • 我怎么知道我的 boost 编译/安装是否已满以及该怎么做,如果不是(我确定给我 6 个库的安装没有满,但我不知道该怎么办)?
  • 我怎么知道我的 boost.log 编译已满?
  • 我读到我必须将 boost.lib 构建为共享对象,但 libs 位于子目录“link-static”中,尽管命令 runtime-link=shared 用于 bjam。我应该对此做些什么吗?
  • 我应该怎么处理我得到的错误?

谢谢你的帮助。

0 投票
5 回答
11582 浏览

c++ - Boost Log 2.0:日志中的空严重级别

我使用的是 Boost-Log 2.0,它与版本 1 有一些不同,我很难输出“严重性”属性。

我正在使用“Boost.Format-style”格式化程序

TimeStamp, LineID,Messagecommon_attributes. Uptime是我使用添加的属性attrs::timer()。我认为这Severity是在使用时自动添加的severity_logger,但显然不是,这是我的问题。我得到空的严重性,例如:

注意空<>。我尝试使用添加严重性,register_simple_formatter_factory但随后出现编译器错误:

我不明白为什么。

这是我的代码:

注意注释掉的行:

这会产生上述错误。

我编译它:

0 投票
2 回答
2709 浏览

c++ - 将 boost.log 与 printf 样式的宏一起使用

我正在开发一个使用自定义平台相关记录器的应用程序。应用程序定义了一些 printf 风格的宏:

在过去的几天里,我一直在努力将应用程序迁移到使用boost.log. 我遇到的最大问题是试图保留这种宏格式,以便只需要更改记录器内部,因为 boost 的日志记录 API 是以 iostream 样式实现的,即

  1. 有没有一种简单的方法来提供一个宏,该宏采用 printf 样式的 args 并将它们打印到 boost 记录器而不必使用字符串缓冲区?(我认为必须格式化为字符串会影响性能)
  2. 如果没有,有没有一种方法可以格式化字符串,va_args而不必使用#ifdef格式化函数的不同平台实现?(这是首先转移到 boost.log 的重点)
0 投票
1 回答
11048 浏览

c++ - 如何将 Boost.Log 重定向到文件

我想要一个并发应用程序中的简单日志文件。我已经下载Boost.Log了 v2.0 并使用Boost 1.53.0.

问题是Boost.Log控制台上的输出。我正在使用BOOST_LOG_TRIVIAL(trace).

有没有重定向BOOST_LOG_TRIVIAL到文件的好方法?

0 投票
1 回答
566 浏览

boost - boost.log 静态链接错误

尝试将我的项目与 MSVC 10.0 上的 boost.log 静态链接时出现以下(以及更多)错误:

请注意,该项目链接到 boost 系统、文件系统和线程库。

我的项目没有定义BOOST_ALL_DYN_LINKorBOOST_LOG_DYN_LINK宏,所以我没想到会看到__declspec签名,我认为这是最终的问题。我是否缺少正确静态链接该库所需的内容?

更新

我删除了项目中的预编译头文件并执行了“清理”,一切都很好。预编译的头文件是否有可能以某种方式导致项目静态链接到 CRT?

0 投票
2 回答
3057 浏览

c++ - Boost.Log 无法设置日志过滤器(未声明的标识符“严重性”)

我正在尝试让 Boost.Log 进入我的项目。问题来自简单示例的以下行:

在我的代码中,这转换为以下内容:

但是,我收到以下错误:

我正在搜索命名空间,试图找出我应该如何做到这一点,但我并没有真正找到任何有用的东西。这似乎需要一些疯狂的 lambda 函数。我可以选择一些替代方案(定义一个填充过滤级别的函数?),但我不确定如何实现这一点。有任何想法吗?

我正在使用 Boost.Log 版本 2.0-r862 和 Boost 1.53.0。

解决方案:Ryan 指出我应该检查我的包含,果然我只是包含trivial.hpp,但core.hppexpressions.hpp需要作为包含。包括他们解决了这个问题。

0 投票
0 回答
401 浏览

c++ - 如何使用Boost.Log?

我目前正在考虑Boost.Log用于记录目的。它看起来很有趣,但我还不太确定我应该如何管理记录器对象。

据我所知,有以下选项:

  1. 使用一个全局记录器对象。
  2. 通过使用Boost.Log标签机制,每个类使用一个记录器对象。
  3. 每个对象使用一个记录器对象(通过使用组合或子类型)。

我有以下问题:

  • 个别方法的好处是什么?Boost.Log手册说最后一种方法更好,但我不明白为什么。
  • 哪种方法将日志记录的语法开销保持在最低限度?或者您是否使用任何技术来减少语法开销?例如,我想避免从每个构造函数初始化记录器对象,但不幸的是构造函数委托还不是一个选项。
  • 您对集成Boost.Log到应用程序或编写一个使用Boost.Log.
0 投票
0 回答
368 浏览

boost - 在 OSX 10.8.3 上构建 Boost 1.53.0 Boost Log 2.0r862

我正在使用 Boost Log 2.0r862 在 Mac OSX 10.8.2 上构建 Boost 1.53.0,并将其安装到假根目录以保持 /usr/lib* 和 /opt/lib* 干净。我构建并安装了 Boost并使用 This build and install 成功
./bootstrap --prefix=/path/to/myfakerootdir
安装了库;
./b2 install

在我的项目上运行 cmake 时,它​​会正确检测库包含和 lib 目录。然而,在它完成构建并尝试运行我得到的可执行文件之后

dyld: Library not loaded: libboost_system.dylib Referenced from: /Users/brad/dev/strata/strataextract/build/Debug/StrataExtractUnitTests Reason: image not found

我研究过的一些可能的问题包括:
1.使用 otool 手动更改可执行文件(虽然这似乎是一个非常“hacky”的解决方案)
2.在Github Macports Overlay上使用修改后的端口文件(虽然提供的当前版本太旧了对于我的项目。3.
关于 Boost 的多个构建教程,不幸的是,大多数引用 Bjam,据我了解,这不再是好的做法。
我似乎记得类似的情况,需要我将相对路径设置为 false,但我不确定我是如何会用 Boost + bjam 做到这一点。

0 投票
0 回答
294 浏览

c++ - 有没有办法防止 boost.log 泄漏内存?

我根据 boost.log 教程创建了一个非常简单的测试程序:

当我在 valgrind 下运行它时,它会产生 7 条损失记录,这与我在使用 boost.log 的更复杂的程序中看到的结果一致。有谁知道消除这些泄漏的任何方法,还是我只需要抑制它们?

0 投票
1 回答
1884 浏览

c++ - Boost Logging 对象的重载 << 运算符

所以我想将 Boost.Log 用于我的所有日​​志记录目的。我目前编写了一个类,其中包含实例化和设置辅助方法所需的所有操作。

问题是我想重载 << 运算符以 cout 方式使用它。我希望能够使用它来拥有不同的参数类型似乎是最大的问题。

这是我尝试过的:

但是,我知道这在逻辑上有点缺陷。为了能够将多个参数传递给 << 它需要是递归的。但是我有点困惑如何使用 boost log 来做到这一点。

我是否必须使用自定义接收器而不是方便的 boost 宏来定义日志系统?如果是这样,这是否支持 std::ostream 返回?我猜这将是返回值和流中的输入值。