Apache Log4cxx Version 1.2.0
Loading...
Searching...
No Matches
com/foo/config-qt.cpp

This file is an example of how to use the Qt event loop to monitor the Log4cxx configuration file.

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "config-qt.h"
#include <QCoreApplication>
#include <QVector>
#include <QFileInfo>
#include <QDir>
namespace com { namespace foo {
// Provide the name of the configuration file to Log4cxx.
// Reload the configuration on a QFileSystemWatcher::fileChanged event.
void ConfigureLogging() {
static struct log4cxx_finalizer {
~log4cxx_finalizer() {
}
} finaliser;
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")
, QString("log4j.xml")
, QString("log4j.properties")
};
#if defined(_DEBUG)
#endif
auto selectedPath = QString();
std::tie(status, selectedPath) = log4cxx::qt::Configuration::configureFromFileAndWatch(paths, names);
log4cxx::BasicConfigurator::configure(); // Send events to the console
}
// Retrieve the \c name logger pointer.
auto getLogger(const QString& name) -> LoggerPtr {
return name.isEmpty()
: log4cxx::LogManager::getLogger(name.toStdString());
}
// Retrieve the \c name logger pointer.
auto getLogger(const char* name) -> LoggerPtr {
return name
}
} } // namespace com::foo
static void configure(const LayoutPtr &layout=LayoutPtr())
Add a ConsoleAppender to the root logger that formats output using layout.
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 DefaultLoggerFactory to create it i...
static void shutdown()
Safely close and remove all appenders in all loggers including the root logger.
static void setInternalDebugging(bool enabled)
Use the value of enabled as the new internal debug logging state.
static std::tuple< log4cxx::spi::ConfigurationStatus, QString > configureFromFileAndWatch(const QVector< QString > &directories, const QVector< QString > &filenames)
Configure Log4cxx and watch the file for changes.