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

c++ - Boost logging - 目的地和格式化程序

我在使用Boost Logging库时遇到问题,如果我使用自己的 Log 类将格式化程序或目标添加到记录器,则无法更改该目标或格式化程序。

有人知道如何更改提升日志对象的目的地或格式化程序吗?

我的情况是我希望我的服务器组件处理的每个请求都有一个不同的目标(文件名),所以我需要有灵活的方法来更改它们。此外,我将同时从不同的线程记录日志,并且每个日志都应该有自己的目的地,很容易添加 - 删除。

使用宏的日志记录对象实际上是应用程序全局的这一事实并没有真正帮助这一点。

谁能给我一些指导,告诉我如何创建一种灵活的方式来从 boost::logging 向 Logger 添加/删除目的地?

0 投票
2 回答
909 浏览

c++ - 使用来自 const 成员函数的每个类 boost::log::sources::logger

我想要每个类的日志源,例如文档中的 basic_logger示例

这可行,但是当我从 const 成员函数记录某些内容时,我得到一个编译器错误,抱怨 constness,如下所示:

在这个例子Test::test2中给出了一个编译错误,因为它的 const 而m_logger不是。Test::test1工作正常。

const_cast如何在没有等的情况下以干净的方式解决这个问题mutable

0 投票
1 回答
331 浏览

c++ - boost_logging 无法编译,因为 'CRITICAL_SECTION' : ambiguous symbol

我正在为我的项目使用boost_logging

在我的一个文件中,我只使用了我的日志记录工具: LDBG_ << "something" 但它没有进行编译,我有以下错误:

奇怪的是,这在我的一台 PC 上运行良好,但在另一台 PC 上运行良好,因此可能是 winbase.h 包含不同。

编辑:

以下是 LDBG_ 日志的定义方式:

0 投票
1 回答
2618 浏览

c++ - Boost.Log 与 Boost.Log v2

我目前正在评估一些非托管 C++ 的日志框架。

我的问题是:Boost.Log 和 Boost.Log v2 有什么区别?
Api是不同的吗?在项目中使用 Boost.Log v2 是否安全,还是应该坚持使用 Boost.Log 1.1?
什么时候会被Boost接受?未来可能会发生重大变化?

0 投票
1 回答
1064 浏览

c++ - C++ Boost Logging:如何压缩日志?

我需要压缩由 Boost Logging 库生成的日志。我看到两种方法:

  1. 动态压缩日志到 BZip 或 GZip -最好
  2. 旋转时压缩日志(复制日志并将其压缩)。

我该如何实施?

0 投票
1 回答
1884 浏览

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

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

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

这是我尝试过的:

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

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

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 投票
1 回答
864 浏览

c++ - boost::log (boost logging): BOOST_LOG_FUNCTION 只在主线程中有效

考虑以下函数:

如果我只是在“main”中调用“thread()”,我在“thread()”中创建的日志条目看起来像预期的那样:

但是,如果您在函数中使用“thread()”:

相应的日志条目为空:

我该如何解决?

0 投票
1 回答
5655 浏览

boost - 如何通过 Gloa 使用来自多个文件的 boost 日志

我正在尝试在我的整个应用程序中创建一个全局记录器,以便我可以使用

获取不同类(驻留在不同文件中)日志记录的全局记录器。

我尝试遵循 boost.org 中列出的示例(如下所列)。但似乎不起作用。有谁知道我可以遵循的任何示例,或者如果可行,我需要做什么。谢谢。

http://www.boost.org/doc/libs/1_54_0/libs/log/doc/html/log/detailed/sources.html

0 投票
1 回答
209 浏览

c++ - boost.log breaking when Xcode precompiled header used

I've got a pretty minimal sample project for boost.log running on Xcode 5, which goes like this:

Now everything runs fine with a command line project.

However as soon as I use the snipped in a real-world project with the default Xcode precompiled header file I'm getting compiler errors in boost/type_traits/detail/has_binary_operator.hpp and boost/lexical_cast.hpp.

Precompiled header test_prefix.pch:

Already wasted hours fiddling with compiler settings and project configuration in Xcode so any feedback is appreciated!