我只是在发现 log4cxx 日志框架。编写配置文件似乎有两种不同的语法:
xml方式
键值方式
这两种方法是否有区别或最佳实践?
在 log4j 中,Ceki Gulcu(作者)建议 XML 配置优于文本文件,并且在默认初始化中也优先(log4j.xml
over log4j.txt
)。与使用文本文件相比,使用 XML 配置可以获得更多的效果(我认为您无法使用文本文件配置来操作记录器可加性和设置 log4j 调试模式)。
也就是说,log4cxxlog4cxx.xml
也会首先查找 ,但是网上几乎没有任何配置示例(也没有官方文档),因此您可能需要分析DOMConfigurator
源代码以找出可能的情况(参考 log4j示例可能会产生误导,因为它并不总是完全相同)。
总而言之,log4cxx 在 C++ 世界中的流行度甚至不及 log4j 在 Java 中的流行度。我想知道为什么(以及那里流行什么,除了大量的临时解决方案)。
这实际上不是问题的答案,但是当您使用谷歌搜索时:
log4cxx xml 配置文件语法
这个问题是最热门的搜索结果。正如@MaDa 所提到的,很难找到用于 log4cxx 和语法描述的 XML 配置文件示例。所以就是这样。最简单的可能,只需登录控制台和日志文件。
<?xml version="1.0" encoding="UTF-8" ?>
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Output log messages to the system console. -->
<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %c{1} - %m%n" />
</layout>
</appender>
<!-- Also output log messages to the log file. -->
<appender name="FileAppender" class="org.apache.log4j.FileAppender">
<param name="file" value="LogFile.log" />
<param name="append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %C{2} (%F:%L) - %m%n" />
</layout>
</appender>
<root>
<priority value="all" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="FileAppender" />
</root>
</log4j:configuration>
以及简单的用法示例:
#include "log4cxx/logger.h"
#include "log4cxx/xml/domconfigurator.h"
using namespace log4cxx;
using namespace log4cxx::xml;
LoggerPtr logger (Logger::getLogger ("TEST"));
int main ()
{
DOMConfigurator::configure ("Log4cxxConfig.xml");
LOG4CXX_INFO (logger, "App started!");
LOG4CXX_ERROR (logger, "Some error!");
return 0;
}