diff options
author | Fabian Bumberger <fbumberger@rim.com> | 2012-09-18 14:15:18 -0400 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-10-04 14:25:47 +0200 |
commit | c86ed49a7989adb3e2e3c42794e44609f12ce493 (patch) | |
tree | c76cf967541b294fcaff4a1d0e7cfda21de88a00 /src/corelib/global/qlogging.cpp | |
parent | c1197677901648893856084178291078035f2bc2 (diff) |
Use slogger2 for logging on Blackberry instead of writing to stderr
Change-Id: Id0137400f18c8dfe7be7ca44670c16615401d424
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Peter Hartmann <phartmann@rim.com>
Diffstat (limited to 'src/corelib/global/qlogging.cpp')
-rw-r--r-- | src/corelib/global/qlogging.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp index aec7111207..13bbdbead0 100644 --- a/src/corelib/global/qlogging.cpp +++ b/src/corelib/global/qlogging.cpp @@ -53,6 +53,9 @@ #ifdef Q_OS_WIN #include <qt_windows.h> #endif +#ifdef QT_USE_SLOG2 +#include <slog2.h> +#endif #include <stdio.h> @@ -660,6 +663,56 @@ void QMessagePattern::setPattern(const QString &pattern) memcpy(literals, literalsVar.constData(), literalsVar.size() * sizeof(const char*)); } +#if defined(QT_USE_SLOG2) +#ifndef QT_LOG_CODE +#define QT_LOG_CODE 9000 +#endif + +extern char *__progname; + +static void slog2_default_handler(QtMsgType msgType, const char *message) +{ + if (slog2_set_default_buffer((slog2_buffer_t)-1) == 0) { + slog2_buffer_set_config_t buffer_config; + slog2_buffer_t buffer_handle; + + buffer_config.buffer_set_name = __progname; + buffer_config.num_buffers = 1; + buffer_config.verbosity_level = SLOG2_INFO; + buffer_config.buffer_config[0].buffer_name = "default"; + buffer_config.buffer_config[0].num_pages = 8; + + if (slog2_register(&buffer_config, &buffer_handle, 0) == -1) { + fprintf(stderr, "Error registering slogger2 buffer!\n"); + fprintf(stderr, "%s", message); + fflush(stderr); + return; + } + + // Set as the default buffer + slog2_set_default_buffer(buffer_handle); + } + int severity; + //Determines the severity level + switch (msgType) { + case QtDebugMsg: + severity = SLOG2_INFO; + break; + case QtWarningMsg: + severity = SLOG2_NOTICE; + break; + case QtCriticalMsg: + severity = SLOG2_WARNING; + break; + case QtFatalMsg: + severity = SLOG2_ERROR; + break; + } + //writes to the slog2 buffer + slog2c(NULL, QT_LOG_CODE, severity, message); +} +#endif // QT_USE_SLOG2 + Q_GLOBAL_STATIC(QMessagePattern, qMessagePattern) /*! @@ -747,8 +800,13 @@ static void qDefaultMessageHandler(QtMsgType type, const QMessageLogContext &con return; } #endif // Q_OS_WIN + +#if defined(QT_USE_SLOG2) + slog2_default_handler(type, logMessage.toLocal8Bit().constData()); +#else fprintf(stderr, "%s", logMessage.toLocal8Bit().constData()); fflush(stderr); +#endif } /*! |