问题标签 [log4cplus]

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 回答
2699 浏览

c++ - 使用 CMake 构建和使用 Log4cplus

社区,

我在构建和使用带有 Embarcadero 的 Log4cplus 库时遇到以下问题。首先,我从http://sourceforge.net/p/log4cplus/wiki/Home/下载库,然后导航到要构建库的目录,然后键入 cmake -G "Borland Makefiles" mypathtotherootomypreviousdownload。然后它说,构建文件已写入当前目录。现在我启动 MSYS sh.exe 并键入 make。这也有效。我得到一个 bin 文件夹,其中包含库的各种工作测试(作为 exe 文件)。在这个 bin 文件夹中还有一个 dll log4cplusUD.dll。现在我还在 src 文件夹中找到了相应的 LIB log4cplusUD.lib。我当然熟悉如何将动态库与 Embarcadero 静态链接。但是在尝试编译时

我收到链接器错误,未解析外部符号 log4cplus::Logger::getInstance。

上面的代码只是从 sh.exe 运行 make 时编译和运行良好的测试之一。那么我做错了什么?

我还尝试将上面的 main.cpp 与 log4cplusUD.lib 与以下 CMakeLists.txt 文件链接起来

但我得到相同的链接器错误!

0 投票
2 回答
403 浏览

html - 在 C++ linux 中使用 log4cplus 在 html 文件中写入日志

我们正在使用 Log4cplus 在基于 Linux 的家用电器中生成日志。这些日志当前在运行 Web 服务器的家用电器上可用。我们还通过 Web 浏览器显示此日志文件。但是由于日志文件是文本(即不是html格式),文件没有格式化,很难单独查看每个日志。

我们希望通过 Web 服务器查看这些日志,日志格式为 html。log4j 支持 html 格式的输出日志,但是我们还没有找到使用 log4cplus 生成 html 格式日志的方法。这篇文章是为了收集关于如何使用 log4cplus 做到这一点的想法。无论是在 log4cplus 中还是在后处理中,但都是实时的,因为我们正在实时查找日志。

0 投票
1 回答
468 浏览

c++ - log4cplus:ERROR Re-initializing default context after it has been destroyed

我正在运行 Win32 应用程序(它是基于谷歌测试的单元测试)。在运行结束时,打印测试摘要时,出现以下故障:

似乎 log4cplus 默认上下文已经被破坏了。知道如何防止它在我的所有消息都被打印之前被破坏吗?

0 投票
1 回答
789 浏览

log4cplus - 使用 Log4Cplus (Windows) 从多个进程记录到同一个日志文件

我们的一些客户使用我们的应用程序的方式是安装到网络驱动器上,然后每个用户在他们的本地机器上执行 exe。因此,我们有多个进程写入同一个日志文件。我已经用一些测试程序测试了这个配置,我得到了这个错误。

我假设这是由于其中一个进程记录器尝试重命名文件时写入的文件。

这是我的属性文件。

我的问题是,如果 Log4Cplus 有办法处理这个问题,或者这只是一个通用的日志记录?使用 AsyncAppender 会起作用吗?如果是这样,你能举例说明如何使用它吗?我找不到任何东西。

谢谢!

0 投票
2 回答
902 浏览

c - 使用 log4cplus 时可以使用 printf 格式吗?

log4cplus 是否提供了以 C-Style / printf 格式打印的 API?

原因:我想在C代码中使用log4cplus(除了C++),不想事先准备好字符串。

0 投票
0 回答
656 浏览

c++ - 使用额外库时链接失败

glog当我使用库(代码中未使用 Google 的日志库)构建一个简单的 C++ 程序时,我收到“未定义的引用”错误。当我-lglog从构建命令中删除时,链接成功。

请注意,我添加到链接的库根本没有在代码中使用,尽管它导致构建失败。此外,gloglog4cpp库应该是独立的。

你能解释一下这种不寻常的行为吗?

环境:Ubuntu 14.04

代码:

工作构建命令:

构建命令失败:

编辑:

此命令也成功构建:

此命令失败(更改库的顺序):

这成功了:

这失败了:

编辑2:

我研究了重复的建议(1)(2),以发现那里可能对我有用,但结果却是无关紧要的,因为这些案例并没有解决将代码中未使用的库添加到的情况链接并使其失败。

编辑 3:

我环境中的文件(glog 库、log4cpp 库、使用的 log4cpp 标头和 test.cpp):log_test.zip

0 投票
1 回答
541 浏览

c++ - log4cplus - 在写入之前刷新文件

我的需求很简单:

使用 log4cplus,我希望能够在日志文件中写入日志,并在每次写入之前刷新日志文件。这样,当我运行我的应用程序时,我的日志文件中只有一行。

我试过 append=False 属性,但它只在启动时刷新日志文件。

我可以用 C++ 手动完成,但我不想编写 C++ 代码,因为该产品已经在生产中。

任何想法 ?

谢谢,

0 投票
1 回答
2937 浏览

c++ - 未定义对 Logger::getInstance() 的引用 - 但仅在某些情况下

我正在使用 log4cplus(从当前的 git master 编译),但链接器收到未定义的引用错误。但是,这些错误仅发生在某些类中。

一般来说,每个类都有以下形式:

标头 (.h)

源 (.cpp)

用法

记录器在类中使用,如下所示:

在编译工作时,链接器会引发未定义的引用错误

对于某些课程。我已经从工作班复制了记录器部分:相同的结果。

用类成员替换静态记录器也不起作用——getInstance()没有找到。

这个问题的解决方法是使用 root-logger 代替;这将编译/链接(即使getRoot()是同一类的一部分!?):

但是还有未定义的引用错误


为了确保没有错字,我使用这些宏进行声明/定义:

同样的结果,那些以前有效的也有效,而那些不……没有。


更多信息:

  1. Log4cplus 使用 -llog4cplusSU 链接(也使用 log4cplusS 进行了测试)并从它的 git master 编译
  2. GCC 4.9 – 使用 C++11
  3. 用于构建项目的 Eclipse CDT
  4. Log4cplus 在 main 中初始化
  5. 所有类都使用相同的编译器和标志编译
  6. 完全清理和构建项目
  7. 所有文件都以相同的方式编译/链接
  8. const / not const 没有效果

结果nm <NAME>.o | grep -i log4cplus

工作对象

带有未定义的引用:


失败的最小类

0 投票
0 回答
184 浏览

c++ - log4cplus RollingFileAppender BAD_ACCESS 错误

  • 以上是ios App中log4cplus crash的日志。我设置了 FileMaxSize = 500Kb 和 MaxBackUp = 5。
  • 因此,经过 5 次日志文件备份以及第 6 次备份的时间,然后它就崩溃了。
  • 我制作了一个静态库,在其中制作了 8 个 Logger 实例,并且全部都将日志转储到同一日志文件中。
  • 使用的多线程环境
0 投票
1 回答
75 浏览

powershell - PowerShell日志过滤功能缓冲输出

我的应用程序使用 log4cplus 进行日志记录。

当我在 CMD 或 PowerShell 中启动它时,可以逐行记录日志。

我决定在 PS 中添加小过滤功能,以使输出丰富多彩。

在此之后,我启动应用程序如下:

问题是现在我一次收到大约几条消息的块日志消息,而不是逐行。我无法理解是什么触发了实际输出。

在我看来,输出的一些缓冲。有任何想法吗?

UPD:问题似乎与使用 C++ 中的简单 std::cout 而不是记录器记录的一些消息有关。

UPD2:我开始认为触发输出的实际上是 C++。从下图中可以看出,最后一条消息来自 std::cout,之前的所有消息都来自 log4cplus。 示例输出