什么是提升日志,如何获取以及如何构建它

Coo*_*kie 29 c++ logging boost

所以我听说有关boost log的好消息.这声称它的存在:

http://boost-log.sourceforge.net/libs/log/doc/html/index.html

这是教程:

http://boost-log.sourceforge.net/libs/log/doc/html/log/tutorial.html#log.tutorial.trivial

但是,提升日志不是提升的一部分.因此不在常规的boost分支中.

可以从这里单独下载升压日志:

http://sourceforge.net/projects/boost-log/

我可能只是缺乏经验,但我发现安装说明很差.尽管如此,在将文件夹boost和lib下载并复制到boost文件夹后,我可以运行bootstrap和bjam.这失败了Boost.Filesystem版本的错误,类似于这里提到的那些:

http://boost.2283326.n4.nabble.com/Boost-Log-compilation-on-msvc-2010-fail-td3488502.html

Andrew Semashev的推荐(在上面的链接中)是"请使用Boost.Log v2(来自SVN主干)."

看看https://boost-log.svn.sourceforge.net/svnroot/boost-log,我只能看到版本1.

看看http://svn.boost.org/svn/boost/sandbox/,我可以找到John Torjo的boost logging v2.但是,仅从安德鲁·塞马舍夫所谈论的可能不是提升日志v2的语法.

看到我已经花了太多时间在这上面,我想我会得到一些帮助,也许其他人可能会从这篇文章和答案中获益并节省一些时间.我认为之前没有得到过回答,这些答案会改变我的想法.

所以,请问:Andrew Semashev谈论的是什么是boost log v2?和John Torjo一样吗?如果没有,我可以在哪里找到它?我该如何构建它?

谢谢

PS我应该提到这是在Windows上使用Visual Studio Express 2010

PPS猜测"版本2",显然只是SVN,也有问题,但有这条线(见下面Sergio的答案)

<toolset>msvc:<define>BOOST_FILESYSTEM_VERSION=2

在bjam文件中至少我可以编译.但是,这个文件

#include <boost/log/trivial.hpp>
int main(int, char*[])
{
    BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
    BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
    BOOST_LOG_TRIVIAL(info) << "An informational severity message";
    BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
    BOOST_LOG_TRIVIAL(error) << "An error severity message";
    BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";
}
Run Code Online (Sandbox Code Playgroud)

直接从教程中,虽然现在编译和链接,不产生任何输出...

yas*_*ser 14

这是我在Linux框中安装Boost.Log所遵循的方法.构建和安装Boost库之前的一个重要注意事项:确保已安装了类似的线程库pthreads.大多数包管理员应该拥有它们.

以下是构建步骤:

如果你已经从源代码安装了Boost,那么它的好处继续下一步.否则从这里下载(最好是最新版本(v1.46).我用的是v1.45).提取增强库,如下:/opt.我们可以和Boost.Log一起构建库.

  • Sourceforge下载Boost.Log .
  • 提取文件夹中的Boost.Log源存档 - 比方说/opt.将日志文件夹复制/opt/boost-log-1.0/boost到您的boost源目录中/opt/Boost_1_45_0/boost(假设您已将其解压缩/opt).
  • 将日志文件夹复制/opt/boost-log-1.0/libs到您的boost libs目录中/opt/Boost_1_45_0/libs(假设您已将其解压缩/opt).如果您尚未安装其他Boost库,请按照下列步骤操作:
    • cd /opt/Boost_1_45_0
    • .bootstrap.sh --show-libraries - 这将列出将构建和安装的所有库.您应该看到log列为其中的一部分.
    • .bootstrap.sh --with-libraries=all --prefix=/usr/local --includedir=/usr/local/include --libdir=/usr/local/lib
    • ./bjam install

最后确保$LD_LIBRARY_PATH/usr/local/lib(bjam安装构建库中指定的路径)作为其中的一部分.如果不编辑您的~/.bashrc并添加以下内容:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)


ser*_*gio 8

根据安德烈在你发布的链接中所说的内容,提升日志v2就是你通过检查主干得到的.

实际上,似乎这个版本在编译boost :: filesystem v3时也遇到了问题.

如果这也是你的情况,添加后会编译一个解决方法

<define>BOOST_FILESYSTEM_VERSION=2
Run Code Online (Sandbox Code Playgroud)

到jamfile.

如果这不起作用,那么,检查您是否正在构建库的单线程或多线程版本.应该更多地测试多线程boost-log(根据Andrey).

希望这有帮助......我没试过......

编辑:

在哪里添加?

我将它添加到requirements的部分boost-log/libs/log/build/Jamfile.v2,shared该款:

project boost/log
    : source-location ../src
    : requirements
       <link>shared:<define>BOOST_LOG_DLL
       <link>shared:<define>BOOST_FILESYSTEM_VERSION=2
Run Code Online (Sandbox Code Playgroud)

编辑:来自Cookie的评论,BOOST_FILESYSTEM_VERSION=2应指定为

       <link>msvc:<define>BOOST_FILESYSTEM_VERSION=2
Run Code Online (Sandbox Code Playgroud)

不在shared.