问题标签 [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.
c++ - 如何向另一个公开和注册一个 boost log 核心
dll 和可执行文件都使用 boost::log。他们最终使用不同的单例日志核心。如何将 dll 核心暴露给可执行文件并将 dll 核心注册到 exe 核心,以便我可以将两者重定向到一个日志文件中。
我写了一个最小的例子来说明我绊倒的地方:
日志用户.hpp
日志用户.cpp
主文件
LogUser 编译成 LogUser.dll。LogUser 的构造函数创建了一个跟踪消息,该消息最终出现在控制台上。Main 将其输出重定向到日志文件,但不会将 dll 输出重定向到同一日志文件。我想 dll 包含它自己的 logcore,我必须先将它的消息重定向到另一个核心。我用谷歌搜索了这个问题,但我找不到一个简单的解决方案,尽管感觉这应该是设置过程中 main 中的单行调用。以及 dll 接口中 boost logcore 单例的 getter。
有没有我想念的标准方式?我将如何在此处重定向该日志记录?
编辑#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,因此将两者链接在一起对我来说是可以接受的。
有没有办法在静态链接的同时获得相同的结果?
c++ - 实时提升日志记录
我使用 boost log 将我的日志输出到两个单独的文件中,问题是我需要立即写入这些输出,但是 boost 等待 200 多行才能将其输出到文件中。我不想拥有超快的输出,但每秒两次或每秒可能会很棒。
有没有办法管理这个时间或每次写入之间的行数?
我的 h ( BoostLogging.h
) :
来源(BoostLogging.cc
):
c++ - 如何为升压接收器(非全局)设置 open_mode 以附加
目前我正在使用接收器将数据写入日志文件和标准输出。不幸的是,如果我重新启动我的应用程序,接收器不会将新条目附加到日志文件中。它覆盖现有数据。我的代码如下:
我发现有一个关键字open_mode
应该设置为附加:
但是有人知道如何在我的构造函数中为接收器设置这个关键字吗?因为我猜add_file_log
会产生全球影响。
注意:我没有使用文件轮换。
c++ - 我的程序在使用 boost 库时不支持线程安全日志记录
我目前正在创建一个应该用于记录目的的类。
但是这里有一个问题,它不支持线程同步。当我一个一个线程运行时没有问题。但是当我一次运行两个或多个线程时出现问题。
我面临的问题是:“如果我创建两个线程来创建两个单独的日志,但是两个线程正在冲突并将其日志消息写入两个文件”。
如果有人发现问题,请帮我解决。
BoostLogger.h:
BoostLogger.cpp:
源.cpp:
如果您需要有关此的更多信息,请询问我。
我想使用 boost 库创建线程安全记录器。如果可以的话,请帮助我。
还有一件事,如果可能的话,线程必须同时运行。
谢谢。
c++ - 如何为 boost::log 控制台输出添加颜色编码?
我正在尝试为 linux 下的 boost::log 添加彩色日志输出。我阅读了以下内容并尝试了这个:
但它给了我以下结果:
[2016-07-11 17:23:16.328435] [0x00007f15f03d6780] [错误] [1;31这是一个错误日志。
如何正确地将彩色日志输出添加到 boost::log?
c++ - 如何使用自定义 boost::log 格式化程序输出 TimeStamp 和 ThreadID 属性?
我正在使用自定义boost::log格式化程序对输出日志消息进行颜色编码,但我找不到将TimeStamp和ThreadID属性添加到日志的正确方法。当我使用文件日志时,我只是写keywords::format = "[%TimeStamp%] [%ThreadID%] [%Severity%]: %Message%"
为logging::add_file_log
参数。我想在以下自定义格式化程序中产生类似的效果:
c++ - Boost.log:当它使用 add_file_log() 函数时,如何防止输出被复制到所有添加的流中?
我使用该add_file_log()
函数来初始化将日志记录存储到文本文件中的日志接收器。当我定义几个接收器时,我观察到:
- 为每个接收器创建一个文件。
- 输出被复制到所有文件。
这是我的记录器:
这是我的main()
功能:
运行示例后,文件包含:
a.txt_0.log
b.txt_0.log
我怎样才能防止这种行为?我希望每个文件只存储其关联记录器生成的信息。
c++ - 如何查询 boost::log 严重性?
我正在使用boost::log库的简单日志记录,我想根据当前设置的记录器严重性执行一些代码。仅当将输出日志消息时,才需要构建日志消息。但是我找不到查询严重性的正确方法。代码必须类似于:
另外当我知道消息会被输出时,可能有一些方法可以避免重复检查严重性并直接输出而不是使用BOOST_LOG_TRIVIAL
宏?
c++ - 判断 Boost.Log sink 是否存在
在我的项目中,我在库和具有不同文件名的主应用程序中打开了一个 boost::log xml 接收器。该库启动自己的日志,因为它有时独立运行。因此,正如预期的那样,主应用程序日志接收每条日志消息,而库仅接收创建后的日志消息。我想通过 boost::log::sink::exists( type/filter/format ) 之类的东西来避免这个重复的日志,有什么建议或者有没有办法列出打开的接收器?现在我只是在检查主应用程序日志文件是否存在,它可以工作但很脆弱。
谢谢
c++ - 提升日志严重性在日志消息中为空
我正在设置日志记录的格式化程序,严重性字段在最终日志消息中打印为空。代码编译得很好,但没有按预期工作。请指教。升压日志上的文档非常神秘且不清楚。
我正在粘贴与较大部分分开的独立代码片段。