问题标签 [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.
logging - 如何在多dll程序中初始化一次日志系统?
我正在使用 Boost Log 来构建我的日志系统。在我的程序中,有许多 DLL 组件,这是构建程序的常用方法。
我有一个困惑。在每个 dll 中,我需要初始化它自己的日志系统并写入它的特定日志文件,否则 DLL 无法输出日志消息。所以在我的程序中,我必须多次初始化日志。我在Dll 入口点初始化日志:
这样,如果有五个dll,我需要用不同的日志文件初始化日志五次,这是一个巨大的工作量。
是否可以在整个 dll 中初始化一次日志?我想在每个 dll 中共享日志系统。
或者有没有其他类型的日志系统支持这个?
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
图书馆的原因是什么?我什么时候应该链接它?
c++ - 使用 date_time_formatter 时 Boost 日志库的编译错误
我正在尝试使用 Boost 日志库,并且我想在输出中添加一个时间戳。我从这个例子开始,但我遇到了编译错误。我完全按照示例复制了代码,并将init()
函数更改为第二个(example_tutorial_formatters_stream_date_time)。现在我有以下编译错误:
我尝试使用带有和不带有-std=c++11
标志的 gcc 4.7.2 和 4.8.1,但每次都得到相同的结果。似乎错误出现在 Boost 库中,这对我来说很奇怪,因为即使官方示例也无法编译。
c++ - 仅在调试时启用 Boost.Log
我需要一个用于调试目的的记录器,并且我正在使用 Boost.Log(1.54.0,在 boost.org 主页上有一个补丁)。
一切都很好,我创建了一些这样的宏:
现在是 LOG_MESSAGE( lvl ) 仅在调试模式下在 BOOST_LOG_TRIVIAL( lvl ) 中扩展并在发布时忽略的一种方式吗?
例如:
编辑 我的第一次尝试是创建一个空流......我认为在发布模式下编译器会优化它......
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>
行,但它仍然无法编译。
有人知道到底发生了什么吗?
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:
c++ - 如何手动刷新提升日志?
我在 boost 1.54.0 中使用 Boost.Log 来查看它是否对我的应用程序来说是一个可行的选择。一般来说,我的缓冲没有问题,所以我不想打开 auto_flush 或任何东西......但我注意到在我调用之前记录的消息fork()
是重复的,我想知道它是否是因为它们是缓冲的,所以在复制进程映像时缓冲区会被复制,然后两个进程最终都会将它们的缓冲区副本写入日志文件......
所以基本上,我只想在我打电话之前对日志进行一次手动刷新,fork()
以确保没有消息仍在内存中。换句话说,我正在寻找可以在提升日志上使用的类似于fflush()
、.flush()
、等的东西。<< flush
我确实尝试过使用<< flush
日志,但我仍然收到重复的消息,所以我不能 100% 确定它是否正在刷新并且重复是由其他问题引起的,或者它是否以某种方式默默地忽略了<< flush
...
编辑:
我环顾四周,发现 boost log 不是 fork-safe。所以我应该补充一点,我并没有尝试在父进程和子进程中使用相同的日志。我有两种分叉场景 - 一种是父母立即终止并且孩子继续(这样应该是安全的),另一种是孩子应该打开自己的单独日志文件,所以这也应该是安全的......但我需要弄清楚如何关闭日志文件接收器,然后打开一个新的接收器(在不同的文件上)。我想关闭水槽也可能是强制冲洗的一种方式......?
c++ - 如何将输出重定向到提升日志?
我有一个使用 boost 日志的 C++ 程序,并且我加载了一个用户提供的动态链接库。我想将 stderr 重定向到 boost 日志,以便用户的库可以随时执行以下操作:
它产生与以下相同的结果**:
这是可能的,如果是这样,我该怎么做?
(另外,我不确定如何处理严重性......因为cerr <<
不提供严重性信息。我也愿意接受有关这方面的建议......)
** “相同的结果”是指它被记录到与其余日志消息相同的日志文件中,并且相同的日志格式化程序应用于这些行。
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
。我需要在我的格式字符串中做什么才能显示严重性级别?
这是我的代码的一部分: