标签: pantheios

Log4cplus真的这么慢吗?

我一直在用C++测试我的日志记录子系统的三个选项.一个是Log4cplus,一个是Pantheios,最后一个是我们自己编写的简单日志库.

Log4cplus比其他两个慢得多.以下是记录1,000,000个日志条目的结果:

  • log4cplus:200秒编辑:设置缓冲区大小减少到120
  • mylogger:55秒
  • Pantheios:35

我想知道我是否缺少任何性能调整.

我应该补充一点,我总是使用根记录器,我正在记录文件和记录: LOG4CPLUS_INFO(rootLogger, "Replace me with the text!");

谢谢,Reza

c++ performance logging pantheios log4cplus

8
推荐指数
1
解决办法
3779
查看次数

如何为Pantheios记录器创建固定的后端DLL

我有一个VS 2005解决方案,有很多项目(大多数是DLL,1 EXE是一个CppUnit项目),我正在尝试为Pantheios记录器添加一个固定的后端DLL,以便我可以在整个过程中使用一个记录器实例解.按照以下网址中的说明操作:

我似乎有一个固定的后端DLL,支持基本的Pantheios日志记录语句log_DEBUG, log_ERROR等,甚至是跟踪API(http://www.pantheios.org/doc/html/group__group____tracing.html),例如PANTHEIOS_TRACE_NOTICE.

但我坚持前进,因为Pantheios需要"插入器"(将基本类型转换为字符串的API)(http://www.pantheios.org/doc/html/group__group____application__layer__interface____inserters.html)来处理例如int,double,float ,指针等

我不知道如何在我创建的固定后端DLL中实现这些"插入器".如果我只是从我的其他DLL中调用它们,那么我会收到如下错误:

DLLApp.obj : error LNK2019: unresolved external symbol "public: __thiscall pantheios::integer::integer(int,int)" (??0integer@pantheios@@QAE@HH@Z) referenced in function "public: void __thiscall DLLApp::DLLAppSetup(void)" (?DLLAppSetup@DLLApp@@QAEXXZ)

我不确定是否可以(并且需要)使用sourceforge.net文章中提到的.DEF导出"整数"(和其他插入器)类,或者如果我还缺少其他东西.

非常感激任何的帮助.提前致谢.

c++ logging pantheios

5
推荐指数
1
解决办法
651
查看次数

如何用pantheios登录到文件?

我尝试从pantheios的例子登录到文件但无法使其工作.消息在控制台中正确显示,但未创建日志文件.我尝试更改严重性级别,因为我看到了该线程,但没有人工作.

这是代码:

/* Pantheios Header Files */
#include <pantheios/pantheios.hpp>            // Pantheios C++ main header
#include <pantheios/inserters/args.hpp>       // for pantheios::args
#include <pantheios/inserters/exception.hpp>  // for pantheios::exception

#include <pantheios/backends/bec.file.h>      // be.file header

/* Standard C/C++ Header Files */
#include <exception>                          // for std::exception
#include <new>                                // for std::bad_alloc
#include <string>                             // for std::string
#include <stdlib.h>                           // for exit codes

/* ////////////////////////////////////////////////////////////////////// */

/* Define the stock front-end process identity, so that it links when using
* fe.N, fe.simple, etc. */
PANTHEIOS_EXTERN_C …
Run Code Online (Sandbox Code Playgroud)

c++ logging file visual-studio pantheios

5
推荐指数
1
解决办法
4496
查看次数

用于异步捕获高吞吐量数据的c ++日志库的可行性?

我正在使用用C++编写的实时系统.我们希望使用boost或pantheios进行记录.系统有一些标准的日志记录要求,我相信这两个框架都可以满足,但此外我们希望能够记录该系统捕获的所有输入.此输入将由多个线程捕获,包括一些具有实时约束并且无法承受低效日志记录的显着延迟的线程.这应该导致要记录的高吞吐量数据.

我主要想知道是否可以信任任何一个框架来管理来自多个线程的这种高吞吐量日志记录,而不会延迟我的时间关键线程.此外,我们可能需要进行一些数据清理,这需要添加某种钩子,该钩子能够识别具有安全数据的捕获输入,运行我们的数据清理钩子,并维护包含已经擦除的值的映射的缓冲区.

我相信两个日志记录平台都可以做到这一点,但我不清楚他们快速浏览一下他们的API.任何使用过这些日志记录工具的人都可以给我一些关于它们在这种情况下的效率,实现我描述的容易程度,或者它们在两个日志记录框架之间的偏好的反馈吗?真的任何信息都会有用.

谢谢

c++ logging boost real-time pantheios

5
推荐指数
2
解决办法
1196
查看次数

如何使用Pantheios在日志中包含调用类和行号?

我刚刚开始使用Pantheios,它感觉非常像一个伟大的日志库!也许是C++中最伟大的一个!恭喜作者!

但是,我无法在文档中或在所有论坛帖子中找到有关如何在日志中包含调用类和行号的任何内容.

我使用be.file作为后端,我定义了自定义前端,查看fe.simple的示例.这是与某事有关PANTHEIOS_EXTERN_C const char PANTHEIOS_FE_PROCESS_IDENTITY[]还是我完全错误的方式?

c++ logging pantheios

4
推荐指数
1
解决办法
1210
查看次数

初学者:如何使用Pantheios日志API库替代#ifdef DEBUG?如何解决SEVLEVEL?

我想在动态搜索算法中记录很多事件(例如关于收敛到全局最优的信息).此日志记录应该有一个开关来关闭/打开它.现在有很多可能实现这一目标:

  • 实现日志版本和算法的非日志版本 - >冗余
  • 使用宏 - >丑陋而不安全
  • 使用c ++日志库(或:使用日志库的1%功能范围).

我决定使用Pantheios,特别是因为所做的性能声明(不想因为这种日志记录而失去很多性能,这只是在开发中需要).我不得不承认,我不需要这个库的很多功能,但我认为我会更好/更安全地使用它.也许会有一个更好的替代方案我不知道(我只需要编译时决定日志 - >不知道是否有为此目的设计的日志库).

在编译,安装和最终链接之后(手动链接没有成功,但是使用scons构建工具;使用gcc - >显式链接),我想尝试一些例子.

让我们将其减少到类似以下内容:

#include "pantheios/pantheios.hpp"
#include "pantheios/frontends/stock.h"
const PAN_CHAR_T PANTHEIOS_FE_PROCESS_IDENTITY[] = "pantheios_test";    // specify process identity

int main()
{
    pantheios::log_ALERT("alert-event");
    pantheios::log_DEBUG("debug-event");
    pantheios::log_INFORMATIONAL("just information");
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

使用以下文件进行链接:

LIBS=['pantheios.1.core.gcc44', 'pantheios.1.be.fprintf.gcc44', 'pantheios.1.bec.fprintf.gcc44', 'pantheios.1.fe.all.gcc44', 'pantheios.1.util.gcc44']

现在的问题很简单:如何关闭/打开控制台输出?如何选择后端的严重级别?

查看文档会引导我进入许多具有严重性级别的函数,但这些函数会自动调用一次以进行初始化.我知道严重程度级别的动态变化是可能的.我不确切知道,我在哪里更改这些设置.他认为它们应该在前端组件中.链接到"fe_all"已经某种决定哪个级别记录广告哪个级别不是?

它应该相对容易,因为在我的情况下,我只需要编译时关于登录/关闭的决定.

谢谢你的帮助.

萨沙

c++ logging pantheios

3
推荐指数
1
解决办法
3017
查看次数

Pantheios在C++中设置显示级别

我正在使用Pantheios库进行日志记录.我有:

pantheios::log(pantheios::debug, "I'm debug");
pantheios::log(pantheios::informational, "Some info");
Run Code Online (Sandbox Code Playgroud)

哪个输出:

[MyApplication, Jun 14 15:45:26.549; Debug] : I'm debug
[MyApplication.1, Jun 14 15:45:26.549; Informational] : Some info
Run Code Online (Sandbox Code Playgroud)

但我想在显示信息和调试之间做出选择:

 set_level(pantheios::informational) //what should this be ?
 pantheios::log(pantheios::debug, "I'm debug");
 pantheios::log(pantheios::informational, "Some info");
Run Code Online (Sandbox Code Playgroud)

哪个输出:

[MyApplication.1, Jun 14 15:45:26.549; Informational] : Some info
Run Code Online (Sandbox Code Playgroud)

c++ logging pantheios log-level

1
推荐指数
1
解决办法
634
查看次数