我刚刚发现了log4cxx日志框架。 似乎有两种不同的语法来编写配置文件:
xml方式
键值方式
这两种方法是否存在差异或最佳做法?
答案 0 :(得分:1)
在log4j中,Ceki Gulcu(作者)建议在文本文件上进行XML配置,并且它在默认初始化中也优先(log4j.xml
超过log4j.txt
)。使用XML配置比使用文本文件可以实现更多(我认为您无法操纵记录器可加性并使用文本文件配置设置log4j调试模式)。
也就是说,log4cxx也首先查找log4cxx.xml
,但网上几乎没有任何配置示例(也没有官方文档),所以你可能需要分析{{1找到可能的源代码(引用log4j示例可能会产生误导,因为它并不总是完全相同)。
总而言之,C ++世界中的log4cxx流行度甚至没有接近Java中的log4j。我想知道为什么(除了大量的临时解决方案之外,那里很受欢迎)。
答案 1 :(得分:0)
这实际上不是问题的答案,而是当您搜索时:
<块引用>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;
}