问题标签 [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 投票
0 回答
113 浏览

logging - 如何在多dll程序中初始化一次日志系统?

我正在使用 Boost Log 来构建我的日志系统。在我的程序中,有许多 DLL 组件,这是构建程序的常用方法。

我有一个困惑。在每个 dll 中,我需要初始化它自己的日志系统并写入它的特定日志文件,否则 DLL 无法输出日志消息。所以在我的程序中,我必须多次初始化日志。我在Dll 入口点初始化日志:

这样,如果有五个dll,我需要用不同的日志文件初始化日志五次,这是一个巨大的工作量。

是否可以在整个 dll 中初始化一次日志?我想在每个 dll 中共享日志系统。

或者有没有其他类型的日志系统支持这个?

0 投票
1 回答
1525 浏览

c++ - libboost_log_setup.a 库的原因?

在最新的 Boost 1.54 版本中,我看到Boost.Log库出现了。当我编译整个 Boost 1.54 时,我看到它为 Log 库生成了 2 个二进制文件:

  • libboost_log.a
  • libboost_log_setup.a

libboost_log_setup.a图书馆的原因是什么?我什么时候应该链接它?

0 投票
1 回答
1529 浏览

boost - 提升日志回调

我创建了一个基于Boost Log的记录器机制。

我的代码基于此示例中所示的琐碎记录器。

我想知道如何自动调用系统退出

(或任何其他自定义回调函数)每当发生致命错误时。

欢迎任何帮助!

更新:

解决方案是通过重载方法来扩展后端接收器consume()

0 投票
1 回答
2690 浏览

c++ - 使用 date_time_formatter 时 Boost 日志库的编译错误

我正在尝试使用 Boost 日志库,并且我想在输出中添加一个时间戳。我从这个例子开始,但我遇到了编译错误。我完全按照示例复制了代码,并将init()函数更改为第二个(example_tutorial_formatters_stream_date_time)。现在我有以下编译错误:

我尝试使用带有和不带有-std=c++11标志的 gcc 4.7.2 和 4.8.1,但每次都得到相同的结果。似乎错误出现在 Boost 库中,这对我来说很奇怪,因为即使官方示例也无法编译。

0 投票
4 回答
2706 浏览

c++ - 仅在调试时启用 Boost.Log

我需要一个用于调试目的的记录器,并且我正在使用 Boost.Log(1.54.0,在 boost.org 主页上有一个补丁)。

一切都很好,我创建了一些这样的宏:

现在是 LOG_MESSAGE( lvl ) 仅在调试模式下在 BOOST_LOG_TRIVIAL( lvl ) 中扩展并在发布时忽略的一种方式吗?

例如:

编辑 我的第一次尝试是创建一个空流......我认为在发布模式下编译器会优化它......

0 投票
1 回答
2530 浏览

c++ - 在项目中使用时提升日志错误

我在我的 Debian 7 64 位 Linux 机器上编译了 Boost 1.54 并成功安装。

但是,当尝试在我的项目中使用它时,我遇到了一大堆错误(完整转储在这里: http: //pastebin.com/zUTcb7vp)。

我尝试创建一个简单的测试应用程序,如下所示(保存在 main.cpp 中):

这也无法编译。我收到以下错误(堆栈溢出的字符太多无法处理 - 此处的完整堆栈跟踪:http: //pastebin.com/xiXZZVYb):

我删除了该#include <boost/log/utility/init/to_file.hpp>行,但它仍然无法编译。

有人知道到底发生了什么吗?

0 投票
3 回答
15890 浏览

c++ - Boost.Log with CMake causing undefined reference error

I am trying to use the new Boost.Log library in a project I am working on. The project is built with CMake. I am receiving link errors claiming that the linker has come across undefined references to Boost.Log

I have a simple hello world test that fails with these errors. If I am linking against the Boost.Log libraries what would cause it to generate an undefined reference error?

main.cpp:

CMakeLists.txt:

Edit: verbose output from cmake and make

cmake:

make:

0 投票
2 回答
8660 浏览

c++ - 如何手动刷新提升日志?

我在 boost 1.54.0 中使用 Boost.Log 来查看它是否对我的应用程序来说是一个可行的选择。一般来说,我的缓冲没有问题,所以我不想打开 auto_flush 或任何东西......但我注意到在我调用之前记录的消息fork()是重复的,我想知道它是否是因为它们是缓冲的,所以在复制进程映像时缓冲区会被复制,然后两个进程最终都会将它们的缓冲区副本写入日志文件......

所以基本上,我只想在我打电话之前对日志进行一次手动刷新,fork()以确保没有消息仍在内存中。换句话说,我正在寻找可以在提升日志上使用的类似于fflush().flush()、等的东西。<< flush

我确实尝试过使用<< flush日志,但我仍然收到重复的消息,所以我不能 100% 确定它是否正在刷新并且重复是由其他问题引起的,或者它是否以某种方式默默地忽略了<< flush...

编辑:

我环顾四周,发现 boost log 不是 fork-safe。所以我应该补充一点,我并没有尝试在父进程和子进程中使用相同的日志。我有两种分叉场景 - 一种是父母立即终止并且孩子继续(这样应该是安全的),另一种是孩子应该打开自己的单独日志文件,所以这也应该是安全的......但我需要弄清楚如何关闭日志文件接收器,然后打开一个新的接收器(在不同的文件上)。我想关闭水槽也可能是强制冲洗的一种方式......?

0 投票
2 回答
2972 浏览

c++ - 如何将输出重定向到提升日志?

我有一个使用 boost 日志的 C++ 程序,并且我加载了一个用户提供的动态链接库。我想将 stderr 重定向到 boost 日志,以便用户的库可以随时执行以下操作:

它产生与以下相同的结果**:

这是可能的,如果是这样,我该怎么做?

(另外,我不确定如何处理严重性......因为cerr <<不提供严重性信息。我也愿意接受有关这方面的建议......)

** “相同的结果”是指它被记录到与其余日志消息相同的日志文件中,并且相同的日志格式化程序应用于这些行。

0 投票
1 回答
3257 浏览

boost - 在 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。我需要在我的格式字符串中做什么才能显示严重性级别?

这是我的代码的一部分: