Использование функции Log4j CompositeTriggeringPolicy с log4CXX - PullRequest
1 голос
/ 24 августа 2011

Я хотел бы объединить время прокрутки и размер прокрутки в приложении, похоже, в log4cxx нет композитной прокрутки, я прав?

1 Ответ

1 голос
/ 10 сентября 2011

Нет, нет.Фактически, в log4j также не реализована такая комбинированная политика, поэтому она не была перенесена в log4cxx.

Когда-то у меня была задача написать такой смешанный апплет для файла с произвольной политикой (хотя в log4j).Я сделал это, переопределив FileAppender, особеннометод

// log4j
void setFile(String fileName, boolean append, boolean bufferedIO, int bufferSize);
// log4cxx
void setFile(const LogString& filename, bool append1, bool bufferedIO1, size_t bufferSize1, Pool& p);

для продолжения регистрации в соответствующем блоке журнала после перезапуска процесса и

// log4j
void subAppend(LoggingEvent event);
// log4cxx
virtual void append(const spi::LoggingEventPtr& event, log4cxx::helpers::Pool& p); 

для проверки после каждой записи журнала, выполняется ли условие для пролонгации.

Действительно мощная особенность реализации вашего собственного appender в log4j / cxx состоит в том, что вы можете определить его свойства в log4j.properties и задать их в библиотеке.В Java вы получаете это бесплатно, благодаря рефлексии;в log4cxx вам нужно только написать свой метод

void setOption(const LogString& option, const LogString& value);

, в котором вы выполняете итерацию по строкам опций и выполняете необходимые действия по инициализации.

Надеюсь, что это поможет и придет в нужное время.

...