This file is an example of how to use the Qt event loop to monitor the Log4cxx configuration file.
#include "config-qt.h"
#include <QCoreApplication>
#include <QFileInfo>
#include <QDir>
namespace com { namespace foo {
void ConfigureLogging() {
static struct log4cxx_initializer {
log4cxx_initializer() {
}
~log4cxx_initializer() {
}
} initialiser;
QFileInfo app{QCoreApplication::applicationFilePath()};
QString basename{app.baseName()};
QVector<QString> paths =
{ QString(".")
, app.absoluteDir().absolutePath()
};
QVector<QString> names =
{ QString(basename + ".xml")
, QString(basename + ".properties")
, QString("MyApp.properties")
, QString("log4cxx.xml")
, QString("log4cxx.properties")
};
auto selectedPath = QString();
}
auto getLogger(
const QString& name) ->
LoggerPtr {
return name.isEmpty()
}
auto getLogger(
const char* name) ->
LoggerPtr {
return name
}
} }
static void configure(const LayoutPtr &layout=LayoutPtr())
Add a ConsoleAppender that formats output using layout to the root logger.
static LoggerPtr getRootLogger()
Retrieve the root logger from the LoggerRepository.
static LoggerPtr getLogger(const std::string &name)
Retrieve the name Logger instance from the LoggerRepository using the default factory to create it if...
static void shutdown()
Safely close and remove all appenders in all loggers including the root logger.
static std::tuple< spi::ConfigurationStatus, QString > configureFromFileAndWatch(const QVector< QString > &directories, const QVector< QString > &filenames)
Select the file to configure Log4cxx and watch the file for changes.
LOG4CXX_EXPORT void messageHandler(QtMsgType type, const QMessageLogContext &context, const QString &message)
The messageHandler function is a log4cxx replacement of the standard Qt message handler.
@ NotConfigured
Definition configurator.h:33
Definition configuration.h:26
std::shared_ptr< Logger > LoggerPtr
Definition defaultloggerfactory.h:27