void LogManager::doConfigureLogLogger() { QMutexLocker locker(&instance()->mObjectGuard); // Level QString value = InitialisationHelper::setting(QLatin1String("Debug"), QLatin1String("ERROR")); logLogger()->setLevel(OptionConverter::toLevel(value, Level::DEBUG_INT)); // Common layout TTCCLayout *p_layout = new TTCCLayout(); p_layout->setName(QLatin1String("LogLog TTCC")); p_layout->setContextPrinting(false); p_layout->activateOptions(); // Common deny all filter Filter *p_denyall = new DenyAllFilter(); p_denyall->activateOptions(); // ConsoleAppender on stdout for all events <= INFO ConsoleAppender *p_appender; LevelRangeFilter *p_filter; p_appender = new ConsoleAppender(p_layout, ConsoleAppender::STDOUT_TARGET); p_filter = new LevelRangeFilter(); p_filter->setNext(p_denyall); p_filter->setLevelMin(Level::NULL_INT); p_filter->setLevelMax(Level::INFO_INT); p_filter->activateOptions(); p_appender->setName(QLatin1String("LogLog stdout")); p_appender->addFilter(p_filter); p_appender->activateOptions(); logLogger()->addAppender(p_appender); // ConsoleAppender on stderr for all events >= WARN p_appender = new ConsoleAppender(p_layout, ConsoleAppender::STDERR_TARGET); p_filter = new LevelRangeFilter(); p_filter->setNext(p_denyall); p_filter->setLevelMin(Level::WARN_INT); p_filter->setLevelMax(Level::OFF_INT); p_filter->activateOptions(); p_appender->setName(QLatin1String("LogLog stderr")); p_appender->addFilter(p_filter); p_appender->activateOptions(); logLogger()->addAppender(p_appender); }
void LogManager::welcome() { static_logger()->info("Initialising Log4Qt %1", QLatin1String(LOG4QT_VERSION_STR)); // Debug: Info if (static_logger()->isDebugEnabled()) { // Create a nice timestamp with UTC offset DateTime start_time = DateTime::fromMilliSeconds(InitialisationHelper::startTime()); QString offset; { QDateTime utc = start_time.toUTC(); QDateTime local = start_time.toLocalTime(); QDateTime local_as_utc = QDateTime(local.date(), local.time(), Qt::UTC); int min = utc.secsTo(local_as_utc) / 60; if (min < 0) offset += QLatin1Char('-'); else offset += QLatin1Char('+'); min = abs(min); offset += QString::number(min / 60).rightJustified(2, QLatin1Char('0')); offset += QLatin1Char(':'); offset += QString::number(min % 60).rightJustified(2, QLatin1Char('0')); } static_logger()->debug("Program startup time is %1 (UTC%2)", start_time.toString(QLatin1String("ISO8601")), offset); static_logger()->debug("Internal logging uses the level %1", logLogger()->level().toString()); } // Trace: Dump settings if (static_logger()->isTraceEnabled()) { static_logger()->trace("Settings from the system environment:"); QString entry; Q_FOREACH (entry, InitialisationHelper::environmentSettings().keys()) static_logger()->trace(" %1: '%2'", entry, InitialisationHelper::environmentSettings().value(entry)); static_logger()->trace("Settings from the application settings:"); if (QCoreApplication::instance()) { const QLatin1String log4qt_group("Log4Qt"); const QLatin1String properties_group("Properties"); static_logger()->trace(" %1:", log4qt_group); QSettings s; s.beginGroup(log4qt_group); Q_FOREACH (entry, s.childKeys()) static_logger()->trace(" %1: '%2'", entry, s.value(entry).toString()); static_logger()->trace(" %1/%2:", log4qt_group, properties_group); s.beginGroup(properties_group); Q_FOREACH (entry, s.childKeys()) static_logger()->trace(" %1: '%2'", entry, s.value(entry).toString()); } else static_logger()->trace(" QCoreApplication::instance() is not available"); } }
inline void log(Args&&... args) { logLogger()->output(std::forward<Args>(args)...); }