После поиска того, что слишком долго, я решил задать этот простой вопрос о stackoverflow: Как создать настраиваемый макет для log4cplus (1.1.2)? Ближайший связанный вопрос: How do I add a custom filter in log4cplus?, где автор добавляет новый класс непосредственно в каталог log4cplus (или использует пространство имен log4cplus?). У меня нет этой опции в качестве заголовков log4plus и библиотеки устанавливаются независимо друг от друга (и просто установка пространства имен log4cplus не работает либоКак создать настраиваемый макет для log4cplus
То, что я пытался минимальный пример наследования от log4cplus :: PatternLayout:.
namespace myNameSpace {
class LOG4CPLUS_EXPORT MyPatternLayout: public ::log4cplus::PatternLayout {
public:
MyPatternLayout(const log4cplus::tstring& pattern);
MyPatternLayout(const log4cplus::helpers::Properties& properties);
~MyPatternLayout();
private:
// Disallow copying of instances of this class
MyPatternLayout(const MyPatternLayout&);
MyPatternLayout& operator=(const MyPatternLayout&);
};
}
Я ожидаю, что LOG4CPLUS_EXPORT заботится о регистрации моего класса в рамках log4cplus, так что я могу использовать его в файле конфигурации Однако добавление
log4cplus.appender.STDOUT.layout=myNameSpace::MyPatternLayout
приводит к ошибке:.
log4cplus:ERROR Cannot find LayoutFactory: "myNameSpace::MyPatternLayout"
Как я могу зарегистрировать пользовательский макет/приложение?