问题标签 [log4cpp]

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 投票
0 回答
646 浏览

c++ - 如何在我的 C++ 项目 Visual Studio C++ 中添加 LOG4CPP

我是 C++ 新手,经过一些研究后,我想将 LOG4CPP 添加到我当前的项目中,但我真的不知道从哪里开始。我下载了 LOG4CPP 包,但我不知道接下来会发生什么。我正在使用 Windows 并使用 Visual Studio 2012,有人可以帮我吗?

0 投票
1 回答
15260 浏览

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

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

我正在寻找诸如每种方法的优缺点以及它们之间的差异等信息。

即任何已知的内存泄漏?任何可以报告的性能测试?有哪些已知问题需要考虑?

0 投票
0 回答
348 浏览

c++ - 如何在 log4cpp 中创建带有日期和计数器的日志文件名?

我正在尝试使用 log4cpp。我想用这种模式创建日志文件名:

Number_AppName_Date.log 其中: Number - 是一个连续递增的数字(每次我们运行此数字的应用程序都会增加 1) AppName - 应用程序名称 Date - 日期。

  1. 我该怎么做 ?
  2. 是否可以通过属性文件来做到这一点?
0 投票
1 回答
153 浏览

c++ - 如何在 log4cpp 日志中附加 Windows 用户名

以下是我当前的模式布局集:

所以它输出如下到日志文件;

我想将当前的 Windows 用户名添加到 appender 中,以便获得以下输出。但到目前为止还没有运气。我不想为每条消息添加 Windows 用户名,而是 log4cpp 应该获取当前用户名并附加它记录的每条消息(我还不知道 log4cpp 有这个支持。我找到了一个模式键“H”或“h”但是它不起作用并抛出未知的转换说明符“H”。

0 投票
1 回答
615 浏览

c++ - 如何在 log4cpp 属性文件中使用环境变量

我正在为我的 C++ 项目使用log4cpp 。我需要的是在自定义位置而不是当前目录中生成日志文件。为此,我为日志文件路径设置了一些环境变量。问题是如何在 log4cpp 属性文件中使用此环境变量,以便在该位置生成日志文件。

我尝试了各种选项,例如 $(ENV_VAR)、${ENV_VAR}、%ENV_VAR%,但没有一个有效。

谢谢,赫曼特

0 投票
3 回答
1490 浏览

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

我的应用程序有不同的部分调用记录器函数来记录详细信息。

记录器类

调用类

我意识到上述内容会给我带来错误,因为a它们b是不同类型的。解决它的一种方法是使用std::to_string

但是,我对日志记录功能有数百次调用,并且每次对std::to_string. 有没有更简单的方法来做到这一点?

哦,澄清一下,代码之前的工作方式是定义#define 函数。

但我现在正在重写部分代码以符合静态测试。

提前致谢。

0 投票
1 回答
565 浏览

tcl - SWIG tcl:log4cpp 包装器的未定义符号错误

我是 log4cpp 和 swig 包装器的新手。我正在尝试使用 log4cpp 编写一个用于简单日志记录的接口。我已经在我的 Ubuntu 机器上安装了 log4cpp 和 swig。

log4cpp.cpp:

log4cpp.h:

log4cpp.i:

我已完成以下步骤来生成 log4cpp.so 文件:

它生成的log4cpp_wrap.cxx, log4cpp.o, log4cpp_wrap.o and log4cpp.so文件没有任何警告和错误。

每当我在 tcl 中运行以下命令时。

它会生成一个未定义的符号错误:

该怎么做才能消除此错误?

0 投票
1 回答
874 浏览

c++11 - 配置 log4cplus 以在运行时记录到自定义文件

我正在使用配置文件来初始化 log4cplus 模块。我们在配置文件中使用以下命令来指定要生成的日志文件名。

log4cplus.appender.log1.File=TestFile.log

我希望在运行时生成这个 TestFile.log。我使用 setProperty 函数在运行时更改日志文件名,但没有得到想要的结果。

在代码中 -

log4cplus::helpers::Properties 道具;props.setProperty(LOG4CPLUS_TEXT("文件"), LOG4CPLUS_TEXT("TestFile.log"));

在配置文件中 -

log4cplus.appender.afile2.File=${File}

但这会生成日志文件为“${File}”而不是“TestFile.log”。

0 投票
1 回答
1250 浏览

c++ - 配置 log4cpp 日志级别优先级

在一个应用程序中,我们使用 log4cpp-0.3.5rc3 进行日志记录。该应用程序安装在 linux 设备上。应用程序中有一个错误,我想将应用程序的日志级别设置为调试,但无论如何我都找不到在远程设备上执行此操作。在应用程序配置中,我找不到任何关于日志级别的信息:

是不是我必须使用调试配置构建应用程序并安装新版本以将日志级别设置为调试?我想知道 log4cpp 是否有任何用于日志记录的配置文件,例如 Java 中的 log4j,我们可以在其中轻松更改日志级别。

0 投票
1 回答
429 浏览

c++ - 检测到“DEBUG”的 Log4cpp 命名冲突。

问题

编译我的项目时,log4cpp文件出现错误。错误如下: /usr/include/log4cpp/Priority.hh:49:2: erreur: #error Naming collision for 'DEBUG' detected. Please read the FAQ for a workaround.

文件

此错误引用的文件是随 Log4cpp 安装的标头。这里是。错误位于第 49、78 和 109 行

研究

我发现唯一引用此问题的常见问题解答是在log4cpp 的 Sourceforge 上。这是它所说的:

这是由于某些平台的粗鲁造成的,这些平台使用一些生硬的#defines 来破坏命名空间。更准确地说,Win32 API 包括“ERROR”和“DEBUG”的#defines。由于预处理器不知道 C++ 命名范围,这导致在任何地方都保留单词 ERROR 和 DEBUG 。特别是这与 log4cpp::Prioritiy::ERROR 和 log4cpp::Priority::DEBUG 冲突。后两个名称来自 log4j,所以它们不是我们自己编造的。他们的 Win32 作者不应该通过预处理器粗暴地声称这些通用名称。还有更好的选择:

会做得很好。使用 WIN32API_ERROR 等不太通用的名称来减少命名冲突的可能性 如果他们将其用作条件编译的标志,请使用“#define DEBUG DEBUG”和“#if defined(DEBUG)”。在这种情况下,预处理器将简单地将源代码中所有出现的“DEBUG”替换为“DEBUG”,实际上使所有内容保持不变。

当然,正确的解决方案是如果违规方使用上述方法之一,但我们可能需要等待一段时间才能真正发生。作为替代 log4cpp 可以解决这些#defines。通过在#include 任何 log4cpp 头文件之前和 #include 所有平台头文件之后执行 #define LOG4CPP_FIX_ERROR_COLLISION 1 来启用解决方法代码。对于 Win32 平台,此#define 已包含在 log4cpp/config-win32.h 中。

一旦 log4cpp 更新到 log4j 1.2 API,我们可以通过采用新的日志级别名称来解决这个问题。

语境

问题是,我不应该更改源代码。我只能修改编译配置文件(本项目使用 Apache Ant builder、build.xml文件和 bash 脚本)。

我对这个项目很陌生,我不能向以前的开发人员寻求帮助。

问题

有没有人遇到过这个错误?除了更改源代码及其定义之外,还有其他可能的解决方法吗?我的环境变量是原因吗?

我将继续我的搜索,但任何见解都会很有用。谢谢 !