标签: log4cpp

堵塞有什么意义?

我一直想知道,堵塞的重点是什么?就像我所知,clog和cerr一样,但是有了缓冲,所以效率更高.通常stderr与stdout相同,因此clog与cout相同.这对我来说似乎很蹩脚,所以我认为我必须误解它.如果我将消息发送到同一个地方,我会收到错误信息(可能是/ var/log/messages中的内容),那么我可能不会写太多(因此使用非 - 缓冲的cerr).根据我的经验,我希望我的日志消息是最新的(不缓冲)所以我可以帮助找到崩溃(所以我不想使用缓冲的阻塞).显然我应该一直使用cerr.

我希望能够在我的程序中重定向阻塞.重定向cerr会很有用,这样当我调用库例程时,我可以控制cerr和clog的去向.有些编译器可以支持吗?我刚检查了DJGPP,stdout被定义为FILE结构的地址,因此执行"stdout = freopen(...)"之类的操作是违法的.

  • 是否可以重定向clog,cerr,cout,stdin,stdout和/或stderr?
  • clog和cerr缓冲之间的唯一区别是什么?
  • 我应该如何实现(或找到)更强大的日志记录工具(请链接)?

c++ logging log4cpp

51
推荐指数
3
解决办法
2万
查看次数

基于log4j的记录器:log4cpp vs log4cplus vs log4cxx

我想用log4j之后建模的一个记录器替换我记录本机C++代码的当前记录器.我打算让记录器创建一个格式为log4j格式的日志,以便可以使用Log4View查看器查看它.

我正在寻找各自的利弊等信息以及它们之间的差异.

即任何已知的内存泄漏?任何可以报告的性能测试?任何已知的问题应该加以考虑?

c++ logging log4cxx log4cpp log4cplus

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

C++日志库设置

我已经尝试了大约两周的时间来获得一个可以使用的日志库.我试过Log4cxx,Log4cpp,log4cplus和boost.log.问题不在于这些对我来说都不起作用,而是因为我无法弄清楚如何让它们完全发挥作用.我真的想使用log4cxx,因为我正在使用log4j/logback工作,但我无法获得任何基于log4j构建的库.我已经能够构建和使用boost库,但无论我尝试什么,boost.log都会给我各种链接器错误.如果有人可以指导我逐步指导这些库中的一个工作,我将非常感激.另外,如果重要的话,我正在使用eclipse作为我的IDE.

c++ boost log4cxx log4cpp log4cplus

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

在Windows中开始使用log4cpp

我需要登录C++应用程序.谷歌搜索了一段时间后,我决定使用log4cpp.

  1. 这是一个安全的选择,还是有更好的东西?
  2. 如何使用Windows XP,Visual Studio 2005开始安装并将其导入我的应用程序?

TIA

c++ logging visual-studio-2005 log4cpp

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

从.net,用户模式和驱动程序跟踪ETW

我们有一个应用程序,它的一部分是.net,c ++用户模式和C++驱动程序.应用程序分为几个可执行文件,这些可执行文件按需运行并使用LPC相互通信(进程在不同的会话中运行(winlogon)).

目前我们有一个家庭写的日志服务,.net和c ++用户模式通过发送LPC消息进行通信.驱动程序使用DbgPrint并不总是启用,因为它导致代码运行速度减慢30%(我们有大量的日志记录).

我希望将所有日志写在一个地方,最好不要自己编写记录器(我喜欢log4cpp和log4net).要求是将所有可执行文件和驱动程序写入一个地方,并且开销最小.

我已经读过ETW是要走的路,但是我无法找到像log4cpp或log4net那样使用它的已写入的记录器.

所以基本上我的问题是,你知道是否已经实现了log4cpp和我可以使用的log4net的ETW appender?

log4net trace etw multiprocess log4cpp

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

'long long long' 对于使用 log4cpp 的 GCC 来说太长了

我正在开发一个 QT 应用程序,我在其中使用日志记录库 log4cpp。但是现在,在包含 log4pp 的头文件的地方,我得到了这个编译错误: 'long long long' is too long for GCC

当我找到这个错误的来源时,头文件 stdint.h 在这一行打开:

__MINGW_EXTENSION typedef long long int64_t;

谁能告诉我如何处理这个问题?

c++ qt gcc log4cpp long-integer

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

c ++将不同类型连接成函数的字符串

我的应用程序的不同部分调用记录器功能来记录详细信息.

记录器类

std::string filename = "blahblah"; // variable to store the location of the properties file 
log4cpp::PropertyConfigurator::configure(filename);

void Logger::logging(const std::string& msg)
{
   Log4cpp::Category& myLogger = log4cpp::Category::getRoot();

   myLogger.log(log4cpp::Priority::INFO, msg);//only takes in string as input
}
Run Code Online (Sandbox Code Playgroud)

打电话给上课

Logger logMe;

int a = 5;
double b = 6;

logMe.logging("log this msg" + a + "," + b);
Run Code Online (Sandbox Code Playgroud)

我意识到上面会给我错误,因为ab有不同的类型.解决它的一种方法是使用std::to_string

logMe.logging("log this msg" + std::to_string(a) + "," + std::to_string(b));
Run Code Online (Sandbox Code Playgroud)

但是,我有几百次调用日志功能,编辑每次调用都很费时间std::to_string.是否有更简单的方法来做到这一点?

哦,并澄清,代码之前的工作方式是通过定义#define函数.

#Define logging(FLAG, X)\
do {\
    ...
    clog …
Run Code Online (Sandbox Code Playgroud)

c++ string log4cpp

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

如何一次使用log4cpp记录多个变量?

如何使用log4cpp记录多个字符串?

例如,如果我想将所有argv记录到main:

#include <iostream>
#include <log4cpp/Category.hh>
#include <log4cpp/FileAppender.hh>
#include <log4cpp/PatternLayout.hh>

using namespace std;

int main(int argc, char* argv[]) {
    log4cpp::Appender *appender = new log4cpp::FileAppender("FileAppender","mylog");
    log4cpp::PatternLayout *layout = new log4cpp::PatternLayout();
    layout->setConversionPattern("%d: %p - %m %n");
    log4cpp::Category& category = log4cpp::Category::getInstance("Category");
    appender->setLayout(layout);
    category.setAppender(appender);
    category.setPriority(log4cpp::Priority::INFO); 

    category.info("program started"); // this works fine, I see it in the logfile

    for(int i=0; i<argc; ++i) {
        // next line does not compile:
        category.info("argv["<<i<<"] = '"<<argv[i]<<"'");
    }

    return 0;
}   
Run Code Online (Sandbox Code Playgroud)

这条线

category.info("argv["<<i<<"] = '"<<argv[i]<<"'");
Run Code Online (Sandbox Code Playgroud)

不编译.显然,记录器不能作为ostream工作.什么是log4cpp记录这样的东西,一次更好?

c++ logging log4cpp

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