Могу ли я настроить log4cxx как с помощью файла свойств, так и с конфигурацией во время выполнения?

Я хотел бы прочитать в файле конфигурации log4cxx, но во время выполнения я хотел бы изменить appenders / loggers. Я могу это сделать?

Пример файла 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"));

—Я заметил, что вывод все еще записывает в исходное местоположение в моем файле конфигурации.

Разве это не возможно настроить с использованием кода (времени выполнения), а также файла?

3

Решение

Да, вы можете изменить appender или logger через ваш код, хотя у вас есть файл log4crc. Я сделал это в log4c следующим образом.
log4c_appender_t *myappender = log4c_appender_get("man.appender");
Для изменения префикса или журнала dir вам нужно создать объект прокручиваемого файла 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);
а также вы можете установить appender с категорией
log4c_category_set_appender(mycat,myappender);

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]