问题标签 [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 回答
696 浏览

c++ - 未定义对 log4cpp 的引用(GENIE 生成器安装错误消息)

我在安装 GENIE 生成器时收到了一些错误消息。我在用 :

路径设置和配置设置正在使用:

错误信息如下。

** 构建 gevgen g++ -g -Wl,--no-as-needed -Wl,--no-undefined gEvGen.o -L/home/feng/Desktop/Support/root_v6.14.04.source/ROOT/lib -lGui -lCore -lImt -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lROOTDataFrame -lROOTVecOps -lTree -lTreePlayer -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -lMultiProc -pthread -lm -ldl -rdynamic -lMinuit -lGeom -lEG -lEGPythia6 -lGenVector -L/home/feng/Desktop/Support/pythia6428/lib -lPythia6 -L/home/feng/Desktop/Support/lhapdf_5.9.1。orig/LHAPDF/lib -lLHAPDF -L/usr/lib/x86_64-linux-gnu -lxml2 -L/usr/local/lib -llog4cpp -lnsl -L/home/feng/Desktop/genie/GENIE-master/lib - lGMessenger -lGRegistry -lGAlgorithm -lGInteraction -lGHEP -lGBase -lGnumerical -lGUtils -lGPDG -lGBaryonResonance -lGEVGCore -lGEVGDrivers -lGNtuple -lGGeo -lGFluxDrivers -lGPDF -lGElFF -lGDecay -lGFragmentation -lGnuclear -lGLlewellynSmith -lGCrossSections -iGGBUU -lGCharm lGReinSehgal -lGQPM -lGBodekYang -lGEVGModules -lGQEL -lGRES -lGDIS -lGCoh -lGDfrc -lGMEC -lGnuE -lGNuGamma -lGHadronTransp -lGAlvarezRuso -lGBergerSehgal -lGSingleKaon -lGMuELoss -o /home/feng/Desktop/genie/GENIE-master/bin/格夫根-lGBergerSehgal -lGSingleKaon -lGMuELoss -o /home/feng/Desktop/genie/GENIE-master/bin/gevgen-lGBergerSehgal -lGSingleKaon -lGMuELoss -o /home/feng/Desktop/genie/GENIE-master/bin/gevgen

gEvGen.o:在函数“_GLOBAL__sub_I_gEvGen.cxx”中:

gEvGen.cxx:(.text.startup+0x40): 未定义对 `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()' 的引用

gEvGen.cxx:(.text.startup+0x47): 未定义引用`log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'

collect2:错误:ld 返回 1 个退出状态

Makefile:85: 目标“/home/feng/Desktop/genie/GENIE-master/bin/gevgen”的配方失败

make[1]: *** [/home/feng/Desktop/genie/GENIE-master/bin/gevgen] 错误 1

make[1]: 离开目录 '/home/feng/Desktop/genie/GENIE-master/src/Apps'

Makefile:257:目标“应用程序”的配方失败

制作:*** [应用程序] 错误 2

我已经尝试过 GENIE 2.0.0、2.8.0、2.10.0。好像不是版本问题。

我不知道该怎么办 :(

请帮我。

0 投票
0 回答
570 浏览

c++ - log4cpp 进程间写入同一个文件是否安全?

我已经开始使用 log4cpp。我对其进行了一些测试,因为我想让多个进程都写入相同的文件。

我知道它的线程安全,并且我对进程间编写进行了一些测试,它似乎有效。但后来我读到了这个:

3.2. log4cpp 是线程安全的吗?log4cpp::Category 对象(一个记录器)的同一个实例可以同时从不同的线程中使用,而无需显式同步。记录器对象本身将阻止对附加程序的并发访问。每次写入附加程序时,它都会锁定内部互斥锁。因此,例如,从多个线程写入附加到同一个文件的同一个记录器是安全的。虽然 log4cpp 的配置方式是两个不同的 logger 附加到同一个 appender(它可能是一个文件),但是日志框架将无法安排正确的添加,事情可能会混淆。所以不推荐这种配置方式。

这里开始,现在我对此有疑问...

有人对这个有经验么?

0 投票
0 回答
42 浏览

c++ - log4cpp 是否处理堆碎片问题?

我使用 VS2015 在 Windows 64 位上开发。

我使用了一个自定义记录器,但它遭受了堆碎片的影响。我找到了log4cpp图书馆。根据它std::ostringstream内部使用的源代码。我的问题:

  • 我认为我的主要问题是我可以log4cpp安全地使用而不担心堆碎片吗?
  • 第一个问题可能会引出以下问题:std::ostringstream内部如何防止堆碎片?它是否在堆栈中有多个缓冲区用于小字符串,还是总是在堆中分配一个新字符串?
0 投票
1 回答
515 浏览

c++ - MSB3073:命令“mc :VCEnd”以代码 1 退出

我正在尝试在 Visual Studio 2019 中编译 log4cpp_x86,但它给了我如下错误,在此处输入图像描述

我试图将项目的位置从 D: 更改为 C:,但问题仍然存在,并且我将文件夹取消标记为 ReadOnly 但它也不起作用。

同样,当我单击错误即标记为 MSB3073 时,它会将我重定向到 Microsoft.CppCommon.targets 中的行,该行的 xml 标记为:

0 投票
0 回答
205 浏览

c++ - 无法理解如何在类中存储 log4cpp 记录器的实例

这个问题可能会因为它过于简单而被否决 - 但我不确定我应该为这些类型的对象遵循的模式。

我想在一个类中存储一个 log4cpp 记录器的实例,所以我只需要实例化一次。在我看来,这将帮助我保持代码整洁。

想象一下,我有这样的课程:

通过实施:

根据文档(http://log4cpp.sourceforge.net/#simpleexample),该函数log4cpp::Category::getRoot()返回一个log4cpp::Category&. 所以很自然地我想存储这个(如上所示)。

不幸的是,这不起作用。我从我的 IDE 中收到以下错误:operator = is a private member of log4cpp::Category. 现在我意识到我已经过头了。我很困惑,特别是考虑到类文档(http://log4cpp.sourceforge.net/api/classlog4cpp_1_1Category.html)似乎表明我在这里所做的是正确的。

我想我在这里搞砸了我对指针的理解(为什么我通过 & 传递地址而不是通过间接传递指针)。有人可以向我解释如何解决这个问题/我哪里出错了?

谢谢!

0 投票
1 回答
297 浏览

c++ - C++ 运行时链接器错误 (liblog4cpp.so.5) Eclipse

当我尝试构建和运行我从 Eclipse IDE 编写的应用程序时,我收到一个错误:

“加载共享库时出错:liblog4cpp.so.5:无法打开共享对象文件:没有这样的文件或目录”。

没有编译错误。但是如果我从终端运行生成的输出文件,应用程序运行正常。当我ldd用于应用程序时,所有的库都排成一行。

在 Eclipse 中,也定义了所有库路径。

在 Redhat7 操作系统上编译的项目,我使用来自以下位置的 log4cpp https://sourceforge.net/projects/log4cpp/

应该是什么问题

0 投票
1 回答
115 浏览

c++ - Log4cpp:在 UTC/GMT 时区打印日期

我正在使用 log4cpp。有没有办法打印转换为 GMT/UTC 时区的 log4cpp 中的时间戳/日期?

目前我使用 %d ,它当前打印出当地时间,但是我希望在 UTC/GMT 中使用它。

0 投票
1 回答
155 浏览

c++ - log4cpp 在一段时间后停止正常工作

我在多进程环境中有一个 log4cpp 实现。记录器在初始化期间配置一次,然后在服务器 http 请求的分叉进程之间共享。

在第一分钟左右,我看到日志在每秒查询负载时滚动得非常好(比如说它以 100qps 运行)。之后,日志显着减慢。因此,我也记录了 pid 并注意到只有一个进程在一段时间内(大约 10-15 秒)写入日志,然后另一个进程开始写入,依此类推。进程不会死。他们只是没有机会写作。

这与服务器启动时发生的情况不同。那时,每隔一个日志行由不同的进程写入。(另外,我在服务请求结束时为每个进程编写一个日志行。)

在这一点上,我想不出可能出了什么问题。这就是我的 log4cpp conf 文件的外观

编辑:更多更新:感谢@Botje 抽出宝贵时间。

我看到每当创建一个新的子进程时,只有那个进程才能写入日志。这告诉我,其他进程持有的所有参考都变得无效。

我还尝试将附加属性设置为 true。这样,服务器开始正确写入 /tmp/myfile.log,然后在一分钟内切换到写入 /tmp/myfile.log.1。然后一分钟后停止写作。此时日志被定向到stderr,stderr 被定向到另一个日志文件。

还,

0 投票
1 回答
228 浏览

logging - 我可以在 JNI 项目中使用 Java 中的 log4j 和 C++ 中的 log4cxx 将日志存储在同一个文件中吗?

我正在编写一个非 Android JNI 程序,而 java 端正在使用 log4j 进行日志记录。我可以在 C++ 端使用 log4cxx 或 log4cpp 并与 java 共享相同的配置,以便将本机日志存储在同一个文件中吗?这样做有什么缺点吗?

0 投票
0 回答
27 浏览

c++ - 为 Visual Studio 2005 编译 log4cpp

我们有一个由 Visual Studio 2005 编写的遗留 c++ 项目。我们想用log4cpp替换它的内部记录器。我下载了 1.1.3 版。但是vs2005没有现成的解决方案。所以我创建了一个空的win32项目:

配置类型:静态库 (.lib)

并手动添加所有文件.cpp.hh对其进行编译。

最后编译时出现 5 个错误: https ://gist.github.com/LinArcX/c66dc8bd5afa1868e79feef841a3af23

它抱怨一些没有找到的标识符:

我试图添加time.hdailyrollingfileappender.cpp,但又遇到了另一个错误: https ://gist.github.com/LinArcX/1ab580bb4860eaddd374dcadd6b5211b