问题标签 [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.
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。好像不是版本问题。
我不知道该怎么办 :(
请帮我。
c++ - log4cpp 进程间写入同一个文件是否安全?
我已经开始使用 log4cpp。我对其进行了一些测试,因为我想让多个进程都写入相同的文件。
我知道它的线程安全,并且我对进程间编写进行了一些测试,它似乎有效。但后来我读到了这个:
3.2. log4cpp 是线程安全的吗?log4cpp::Category 对象(一个记录器)的同一个实例可以同时从不同的线程中使用,而无需显式同步。记录器对象本身将阻止对附加程序的并发访问。每次写入附加程序时,它都会锁定内部互斥锁。因此,例如,从多个线程写入附加到同一个文件的同一个记录器是安全的。虽然 log4cpp 的配置方式是两个不同的 logger 附加到同一个 appender(它可能是一个文件),但是日志框架将无法安排正确的添加,事情可能会混淆。所以不推荐这种配置方式。
从这里开始,现在我对此有疑问...
有人对这个有经验么?
c++ - log4cpp 是否处理堆碎片问题?
我使用 VS2015 在 Windows 64 位上开发。
我使用了一个自定义记录器,但它遭受了堆碎片的影响。我找到了log4cpp
图书馆。根据它std::ostringstream
内部使用的源代码。我的问题:
- 我认为我的主要问题是我可以
log4cpp
安全地使用而不担心堆碎片吗? - 第一个问题可能会引出以下问题:
std::ostringstream
内部如何防止堆碎片?它是否在堆栈中有多个缓冲区用于小字符串,还是总是在堆中分配一个新字符串?
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)似乎表明我在这里所做的是正确的。
我想我在这里搞砸了我对指针的理解(为什么我通过 & 传递地址而不是通过间接传递指针)。有人可以向我解释如何解决这个问题/我哪里出错了?
谢谢!
c++ - C++ 运行时链接器错误 (liblog4cpp.so.5) Eclipse
当我尝试构建和运行我从 Eclipse IDE 编写的应用程序时,我收到一个错误:
“加载共享库时出错:liblog4cpp.so.5:无法打开共享对象文件:没有这样的文件或目录”。
没有编译错误。但是如果我从终端运行生成的输出文件,应用程序运行正常。当我ldd
用于应用程序时,所有的库都排成一行。
在 Eclipse 中,也定义了所有库路径。
在 Redhat7 操作系统上编译的项目,我使用来自以下位置的 log4cpp https://sourceforge.net/projects/log4cpp/
应该是什么问题
c++ - Log4cpp:在 UTC/GMT 时区打印日期
我正在使用 log4cpp。有没有办法打印转换为 GMT/UTC 时区的 log4cpp 中的时间戳/日期?
目前我使用 %d ,它当前打印出当地时间,但是我希望在 UTC/GMT 中使用它。
c++ - log4cpp 在一段时间后停止正常工作
我在多进程环境中有一个 log4cpp 实现。记录器在初始化期间配置一次,然后在服务器 http 请求的分叉进程之间共享。
在第一分钟左右,我看到日志在每秒查询负载时滚动得非常好(比如说它以 100qps 运行)。之后,日志显着减慢。因此,我也记录了 pid 并注意到只有一个进程在一段时间内(大约 10-15 秒)写入日志,然后另一个进程开始写入,依此类推。进程不会死。他们只是没有机会写作。
这与服务器启动时发生的情况不同。那时,每隔一个日志行由不同的进程写入。(另外,我在服务请求结束时为每个进程编写一个日志行。)
在这一点上,我想不出可能出了什么问题。这就是我的 log4cpp conf 文件的外观
编辑:更多更新:感谢@Botje 抽出宝贵时间。
我看到每当创建一个新的子进程时,只有那个进程才能写入日志。这告诉我,其他进程持有的所有参考都变得无效。
我还尝试将附加属性设置为 true。这样,服务器开始正确写入 /tmp/myfile.log,然后在一分钟内切换到写入 /tmp/myfile.log.1。然后一分钟后停止写作。此时日志被定向到stderr,stderr 被定向到另一个日志文件。
还,
logging - 我可以在 JNI 项目中使用 Java 中的 log4j 和 C++ 中的 log4cxx 将日志存储在同一个文件中吗?
我正在编写一个非 Android JNI 程序,而 java 端正在使用 log4j 进行日志记录。我可以在 C++ 端使用 log4cxx 或 log4cpp 并与 java 共享相同的配置,以便将本机日志存储在同一个文件中吗?这样做有什么缺点吗?
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.h
到dailyrollingfileappender.cpp
,但又遇到了另一个错误:
https ://gist.github.com/LinArcX/1ab580bb4860eaddd374dcadd6b5211b