0

プログラムでlog4cppを構成することは可能ですか?

次の構成ファイルを指定して構成するように構成したいと思います。

appender root basic console
priority root DEBUG
4

1 に答える 1

2

http://sourceforge.net/projects/log4cpp/の log4cpp のことですか?

短い答えはイエスです。

以下にいくつかのサンプル コードを示します。ドキュメントに基づいて詳細を確認できます。

私のコードは、実行時にファイルベースの log4cpp インスタンスを構成するために使用されます。

「優先度」は「DEBUG」、...
「名前」は「ルート」 、
「レイアウト」は「%d{%Y-%m-%d %H:%M:%S}%c %x: %m%n"

// Create RollingFileAppender
log4cpp::Appender *rfileAppender = new log4cpp::RollingFileAppender(std::string(name),
        std::string(fileName),
        maxFileSize,
        maxBackupIndex,
        append,
        mode);

if (rfileAppender != NULL)
{
    // Create PatternLayout
    log4cpp::Layout *layout = new log4cpp::PatternLayout();

    if (layout != NULL)
    {
        try
        {
            // Set up Pattern
            ((log4cpp::PatternLayout *)layout)->setConversionPattern(std::string(layoutPattern));

            // Bind Layout to RollingFileAppender
            rfileAppender->setLayout(layout);

            category.setAdditivity(additivity);

            try
            {
                category.setPriority(log4cpp::Priority::getPriorityValue(std::string(priority)));
            }
            catch(std::invalid_argument &ia)
            {
                std::cerr << "Invalid Priority: "  << priority << std::endl;
                category.setPriority(log4cpp::Priority::INFO);
            }

            // Bind RollingFileAppender to Category
            category.addAppender(rfileAppender);

            return 0;
        }
        catch(log4cpp::ConfigureFailure &cf)
        {
            std::cerr << cf.what() << std::endl;
            return 1;
        }
    }
    else
    {
        std::cerr << "Cannot initialize PatternLayout" << std::endl;
        return 1;
    }
}
于 2013-01-28T15:45:12.693 に答える