3

構成ファイルをlog4cxxに読み込みたいのですが、実行時にアペンダー/ロガーを変更したいと思います。これはできますか?

log4cxxファイルの例:

log4j.rootLogger=all, console, file

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.SimpleLayout
log4j.appender.console.threshold=info

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %c [%p] %l %m%n
log4j.appender.file.filename=logfile.txt
log4j.appender.file.datePattern='.'yyyy-MM-dd

ソースの例:

PropertyConfigurator::configure("./LoggingConfig.txt");

auto rootlogger = Logger::getRootLogger();
DailyRollingFileAppenderPtr fileappender = rootlogger->getAppender(LOG4CXX_STR("file"));

fileappender->setFile(LOG4CXX_STR("thisisthenewfile.txt"));

--出力がまだ構成ファイルの元の場所に書き込まれていることに気づきました。

ファイルだけでなくコード(ランタイム)を使用して構成することはおそらく不可能ですか?

4

1 に答える 1

0

はい、log4crcファイルがありますが、コードを使用してアペンダーまたはロガーを変更することは可能です。私はこれをlog4cで次のように行いました。
log4c_appender_t *myappender = log4c_appender_get("man.appender"); プレフィックスまたはログディレクトリを変更するには、次の方法でローリングファイルudataのオブジェクトを作成する必要があります。
rollingfile_udata_t *rfu = rollingfile_make_udata();
次に、パスを設定する
rollingfile_udata_set_logdir(rfu,"my/sample/path");
か、プレフィックスも設定し、アペンダーを使用してローリング
rollingfile_udata_set_files_prefix(rfu,"myPrefix");
ファイルを設定
log4c_appender_set_udata(myappender,rfu);
します。また、カテゴリを使用してアペンダーを設定することもできます。
log4c_category_set_appender(mycat,myappender);

于 2014-12-26T07:33:39.063 に答える