问题标签 [boost-logging]

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 投票
2 回答
655 浏览

c++ - 如何向另一个公开和注册一个 boost log 核心

dll 和可执行文件都使用 boost::log。他们最终使用不同的单例日志核心。如何将 dll 核心暴露给可执行文件并将 dll 核心注册到 exe 核心,以便我可以将两者重定向到一个日志文件中。

我写了一个最小的例子来说明我绊倒的地方:

日志用户.hpp

日志用户.cpp

主文件

LogUser 编译成 LogUser.dll。LogUser 的构造函数创建了一个跟踪消息,该消息最终出现在控制台上。Main 将其输出重定向到日志文件,但不会将 dll 输出重定向到同一日志文件。我想 dll 包含它自己的 logcore,我必须先将它的消息重定向到另一个核心。我用谷歌搜索了这个问题,但我找不到一个简单的解决方案,尽管感觉这应该是设置过程中 main 中的单行调用。以及 dll 接口中 boost logcore 单例的 getter。

有没有我想念的标准方式?我将如何在此处重定向该日志记录?

编辑#1:-我的系统上的输出和我想要发生的事情的虚构。 在此处输入图像描述

编辑#2:-我在这里找到了一个可能的解决方案。- 如果该提示解决了问题,由于是克隆,我将删除此问题。

编辑#3:我实施了编辑#2 中建议的解决方案。它有效,但不是我想要的。

基本上你应该这样做#define BOOST_LOG_DYN_LINK。不幸的是,这不起作用,因为 log 正在使用其他还必须递归添加的库。我结束了#define BOOST_ALL_DYN_LINK。现在所有的 boost 都是动态的,在 V1.59 中可能是 30 个 dll。在我的最小示例中,我必须为 chrono、date_time、filesystem、log_setup、log、regex、system 和 thread (.count = 8) 提供 dll。

因此,即使结果正是我想要得到它的方式不同,这也将这个问题与另一个问题区分开来。DLL 方法确保核心只有一个 dll 单例。我更喜欢拥有 2 个内核而不是必须提供 dll,因此将两者链接在一起对我来说是可以接受的。

有没有办法在静态链接的同时获得相同的结果?

0 投票
2 回答
572 浏览

c++ - 实时提升日志记录

我使用 boost log 将我的日志输出到两个单独的文件中,问题是我需要立即写入这些输出,但是 boost 等待 200 多行才能将其输出到文件中。我不想拥有超快的输出,但每秒两次或每秒可能会很棒。

有没有办法管理这个时间或每次写入之间的行数?

我的 h ( BoostLogging.h) :

来源(BoostLogging.cc):

0 投票
1 回答
1169 浏览

c++ - 如何为升压接收器(非全局)设置 open_mode 以附加

目前我正在使用接收器将数据写入日志文件和标准输出。不幸的是,如果我重新启动我的应用程序,接收器不会将新条目附加到日志文件中。它覆盖现有数据。我的代码如下:

我发现有一个关键字open_mode应该设置为附加:

但是有人知道如何在我的构造函数中为接收器设置这个关键字吗?因为我猜add_file_log会产生全球影响。

注意:我没有使用文件轮换。

0 投票
4 回答
2610 浏览

c++ - 我的程序在使用 boost 库时不支持线程安全日志记录

我目前正在创建一个应该用于记录目的的类。

但是这里有一个问题,它不支持线程同步。当我一个一个线程运行时没有问题。但是当我一次运行两个或多个线程时出现问题。

我面临的问题是:“如果我创建两个线程来创建两个单独的日志,但是两个线程正在冲突并将其日志消息写入两个文件”。

如果有人发现问题,请帮我解决。

BoostLogger.h:

BoostLogger.cpp:

源.cpp:

如果您需要有关此的更多信息,请询问我。

我想使用 boost 库创建线程安全记录器。如果可以的话,请帮助我。

还有一件事,如果可能的话,线程必须同时运行。

谢谢。

0 投票
2 回答
4892 浏览

c++ - 如何为 boost::log 控制台输出添加颜色编码?

我正在尝试为 linux 下的 boost::log 添加彩色日志输出。我阅读了以下内容并尝试了这个:

但它给了我以下结果:

[2016-07-11 17:23:16.328435] [0x00007f15f03d6780] [错误] [1;31这是一个错误日志。

如何正确地将彩色日志输出添加到 boost::log?

0 投票
1 回答
1404 浏览

c++ - 如何使用自定义 boost::log 格式化程序输出 TimeStamp 和 ThreadID 属性?

我正在使用自定义boost::log格式化程序对输出日志消息进行颜色编码,但我找不到将TimeStampThreadID属性添加到日志的正确方法。当我使用文件日志时,我只是写keywords::format = "[%TimeStamp%] [%ThreadID%] [%Severity%]: %Message%"logging::add_file_log参数。我想在以下自定义格式化程序中产生类似的效果:

0 投票
1 回答
4171 浏览

c++ - Boost.log:当它使用 add_file_log() 函数时,如何防止输出被复制到所有添加的流中?

我使用该add_file_log()函数来初始化将日志记录存储到文本文件中的日志接收器。当我定义几个接收器时,我观察到:

  • 为每个接收器创建一个文件。
  • 输出被复制到所有文件。

这是我的记录器:

这是我的main()功能:

运行示例后,文件包含:

a.txt_0.log

b.txt_0.log

我怎样才能防止这种行为?我希望每个文件只存储其关联记录器生成的信息。

0 投票
2 回答
2431 浏览

c++ - 如何查询 boost::log 严重性?

我正在使用boost::log库的简单日志记录,我想根据当前设置的记录器严重性执行一些代码。仅当将输出日志消息时,才需要构建日志消息。但是我找不到查询严重性的正确方法。代码必须类似于:

另外当我知道消息会被输出时,可能有一些方法可以避免重复检查严重性并直接输出而不是使用BOOST_LOG_TRIVIAL宏?

0 投票
0 回答
244 浏览

c++ - 判断 Boost.Log sink 是否存在

在我的项目中,我在库和具有不同文件名的主应用程序中打开了一个 boost::log xml 接收器。该库启动自己的日志,因为它有时独立运行。因此,正如预期的那样,主应用程序日志接收每条日志消息,而库仅接收创建后的日志消息。我想通过 boost::log::sink::exists( type/filter/format ) 之类的东西来避免这个重复的日志,有什么建议或者有没有办法列出打开的接收器?现在我只是在检查主应用程序日志文件是否存在,它可以工作但很脆弱。

谢谢

0 投票
1 回答
1019 浏览

c++ - 提升日志严重性在日志消息中为空

我正在设置日志记录的格式化程序,严重性字段在最终日志消息中打印为空。代码编译得很好,但没有按预期工作。请指教。升压日志上的文档非常神秘且不清楚。

我正在粘贴与较大部分分开的独立代码片段。