2013-03-25 1 views
3

Я хотел бы прочитать в файле конфигурации log4cxx, но во время выполнения я хотел бы изменить appenders/loggers. Я могу сделать это?Могу ли я настроить 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")); 

--I've заметил, что выход по-прежнему пишет в исходное местоположение в моем файле конфигурации.

Невозможно ли настроить использование кода (runtime), а также файла?

+0

Вы когда-нибудь находили решение этого вопроса? – Alex

ответ

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);