3

log4cxxロギングフレームワークを発見しているところです。設定ファイルを書くための2つの異なる構文があるようです:

  1. xmlマナー

  2. Key-Valueマナー

この2つのアプローチに違いやベストプラクティスはありますか?

4

2 に答える 2

3

log4j.xmllog4jでは、Ceki Gulcu(作成者)がテキストファイルよりもXML構成を提案しており、デフォルトの初期化でも(より)優先されますlog4j.txt。XML構成では、テキストファイルよりもわずかに多くのことを達成できます(ロガーの加法性を操作したり、テキストファイル構成でlog4jデバッグモードを設定したりすることはできないと思います)。

そうは言っても、log4cxxも最初に検索しlog4cxx.xmlますが、ネット上に構成の例はほとんどないため(公式のドキュメントもありません)、DOMConfiguratorソースコードを分析して、何が可能かを調べる必要があります(log4jを参照)。例は、必ずしもまったく同じではないため、誤解を招く可能性があります)。

結論として、C ++の世界でのlog4cxxの人気は、Javaのlog4jにさえ近づいていません。なぜだろうか(そして、アドホックソリューションのトンを除いて、一体何がそこで人気があるのか​​)。

于 2011-08-24T09:00:54.290 に答える
1

これは実際には質問に対する答えではありませんが、グーグルで検索すると次のようになります。

log4cxxxml構成ファイルの構文

この質問は上位の検索結果です。@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 に答える