プログラムでlog4cppを構成することは可能ですか?
次の構成ファイルを指定して構成するように構成したいと思います。
appender root basic console
priority root DEBUG
プログラムでlog4cppを構成することは可能ですか?
次の構成ファイルを指定して構成するように構成したいと思います。
appender root basic console
priority root DEBUG
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;
}
}