3

我只是在发现 log4cxx 日志框架。编写配置文件似乎有两种不同的语法:

  1. xml方式

  2. 键值方式

这两种方法是否有区别或最佳实践?

4

2 回答 2

3

在 log4j 中,Ceki Gulcu(作者)建议 XML 配置优于文本文件,并且在默认初始化中也优先(log4j.xmlover log4j.txt)。与使用文本文件相比,使用 XML 配置可以获得更多的效果(我认为您无法使用文本文件配置来操作记录器可加性和设置 log4j 调试模式)。

也就是说,log4cxxlog4cxx.xml也会首先查找 ,但是网上几乎没有任何配置示例(也没有官方文档),因此您可能需要分析DOMConfigurator源代码以找出可能的情况(参考 log4j示例可能会产生误导,因为它并不总是完全相同)。

总而言之,log4cxx 在 C++ 世界中的流行度甚至不及 log4j 在 Java 中的流行度。我想知道为什么(以及那里流行什么,除了大量的临时解决方案)。

于 2011-08-24T09:00:54.290 回答
1

这实际上不是问题的答案,但是当您使用谷歌搜索时:

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;
}
于 2021-02-03T10:56:08.657 回答