summaryrefslogtreecommitdiffstats
path: root/logger
diff options
context:
space:
mode:
Diffstat (limited to 'logger')
-rw-r--r--logger/QsDebugOutput.cpp52
-rw-r--r--logger/QsDebugOutput.h34
-rw-r--r--logger/QsLog.cpp159
-rw-r--r--logger/QsLog.h138
-rw-r--r--logger/QsLogDest.cpp104
-rw-r--r--logger/QsLogDest.h53
6 files changed, 0 insertions, 540 deletions
diff --git a/logger/QsDebugOutput.cpp b/logger/QsDebugOutput.cpp
deleted file mode 100644
index d68cd5e9..00000000
--- a/logger/QsDebugOutput.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2010, Razvan Petru
-// All rights reserved.
-
-// Redistribution and use in source and binary forms, with or without modification,
-// are permitted provided that the following conditions are met:
-
-// * Redistributions of source code must retain the above copyright notice, this
-// list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice, this
-// list of conditions and the following disclaimer in the documentation and/or other
-// materials provided with the distribution.
-// * The name of the contributors may not be used to endorse or promote products
-// derived from this software without specific prior written permission.
-
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-// OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#include "QsDebugOutput.h"
-#include <QString>
-#include <QtGlobal>
-
-#if defined(Q_OS_WIN)
-#define WIN32_LEAN_AND_MEAN
-#include <Windows.h>
-void QsDebugOutput::output(const QString &message)
-{
- OutputDebugStringW(reinterpret_cast<const WCHAR *>(message.utf16()));
- OutputDebugStringW(L"\n");
-}
-#elif defined(Q_OS_SYMBIAN)
-#include <e32debug.h>
-void QsDebugOutput::output(const QString &message)
-{
- TPtrC8 symbianMessage(reinterpret_cast<const TUint8 *>(qPrintable(message)));
- RDebug::RawPrint(symbianMessage);
-}
-#elif defined(Q_OS_UNIX)
-#include <cstdio>
-void QsDebugOutput::output(const QString &message)
-{
- fprintf(stderr, "%s\n", qPrintable(message));
- fflush(stderr);
-}
-#endif
diff --git a/logger/QsDebugOutput.h b/logger/QsDebugOutput.h
deleted file mode 100644
index 8c759a6d..00000000
--- a/logger/QsDebugOutput.h
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2010, Razvan Petru
-// All rights reserved.
-
-// Redistribution and use in source and binary forms, with or without modification,
-// are permitted provided that the following conditions are met:
-
-// * Redistributions of source code must retain the above copyright notice, this
-// list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice, this
-// list of conditions and the following disclaimer in the documentation and/or other
-// materials provided with the distribution.
-// * The name of the contributors may not be used to endorse or promote products
-// derived from this software without specific prior written permission.
-
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-// OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#pragma once
-
-class QString;
-
-class QsDebugOutput
-{
-public:
- static void output(const QString &a_message);
-};
diff --git a/logger/QsLog.cpp b/logger/QsLog.cpp
deleted file mode 100644
index 68493963..00000000
--- a/logger/QsLog.cpp
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright (c) 2010, Razvan Petru
-// All rights reserved.
-
-// Redistribution and use in source and binary forms, with or without modification,
-// are permitted provided that the following conditions are met:
-
-// * Redistributions of source code must retain the above copyright notice, this
-// list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice, this
-// list of conditions and the following disclaimer in the documentation and/or other
-// materials provided with the distribution.
-// * The name of the contributors may not be used to endorse or promote products
-// derived from this software without specific prior written permission.
-
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-// OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#include "QsLog.h"
-#include "QsLogDest.h"
-#include <QMutex>
-#include <QList>
-#include <QDateTime>
-#include <QtGlobal>
-#include <cassert>
-#include <cstdlib>
-#include <stdexcept>
-
-namespace QsLogging
-{
-typedef QList<Destination *> DestinationList;
-
-static const char *LevelStrings[] = {"TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL", "UNKNOWN"};
-
-static const char *LevelToText(Level theLevel)
-{
- if (theLevel > FatalLevel)
- {
- assert(!"bad log level");
- return LevelStrings[UnknownLevel];
- }
- return LevelStrings[theLevel];
-}
-
-class LoggerImpl
-{
-public:
- LoggerImpl() : level(InfoLevel)
- {
- }
- QMutex logMutex;
- Level level;
- DestinationList destList;
- QDateTime startTime;
-};
-
-Logger::Logger() : d(new LoggerImpl)
-{
- d->startTime = QDateTime::currentDateTime();
-}
-
-Logger::~Logger()
-{
- delete d;
-}
-
-void Logger::addDestination(Destination *destination)
-{
- assert(destination);
- d->destList.push_back(destination);
-}
-
-void Logger::setLoggingLevel(Level newLevel)
-{
- d->level = newLevel;
-}
-
-Level Logger::loggingLevel() const
-{
- return d->level;
-}
-
-QDateTime Logger::timeOfStart() const
-{
- return d->startTime;
-}
-
-qint64 Logger::timeSinceStart() const
-{
- return d->startTime.msecsTo(QDateTime::currentDateTime());
-}
-
-
-//! creates the complete log message and passes it to the logger
-void Logger::Helper::writeToLog()
-{
- const char *const levelName = LevelToText(level);
- Logger &logger = Logger::instance();
- qint64 msecstotal = logger.timeSinceStart();
- qint64 seconds = msecstotal / 1000;
- qint64 msecs = msecstotal % 1000;
- QString foo;
- char buf[1024];
-
- ::snprintf(buf, 1024, "%5lld.%03lld", seconds, msecs);
-
- const QString completeMessage(QString("%1\t%2\t%3").arg(buf).arg(levelName, 5).arg(buffer));
-
- QMutexLocker lock(&logger.d->logMutex);
- logger.write(completeMessage);
-}
-
-Logger::Helper::Helper(Level logLevel) : level(logLevel), qtDebug(&buffer)
-{
-}
-
-Logger::Helper::~Helper()
-{
- try
- {
- writeToLog();
- }
- catch (std::exception &e)
- {
- // you shouldn't throw exceptions from a sink
- Q_UNUSED(e);
- assert(!"exception in logger helper destructor");
- throw;
- }
-}
-
-//! sends the message to all the destinations
-void Logger::write(const QString &message)
-{
- for (DestinationList::iterator it = d->destList.begin(), endIt = d->destList.end();
- it != endIt; ++it)
- {
- if (!(*it))
- {
- assert(!"null log destination");
- continue;
- }
- (*it)->write(message);
- }
-}
-
-void Logger::removeDestination(Destination* destination)
-{
- d->destList.removeAll(destination);
-}
-
-} // end namespace
diff --git a/logger/QsLog.h b/logger/QsLog.h
deleted file mode 100644
index 2b7984e6..00000000
--- a/logger/QsLog.h
+++ /dev/null
@@ -1,138 +0,0 @@
-// Copyright (c) 2010, Razvan Petru
-// All rights reserved.
-
-// Redistribution and use in source and binary forms, with or without modification,
-// are permitted provided that the following conditions are met:
-
-// * Redistributions of source code must retain the above copyright notice, this
-// list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice, this
-// list of conditions and the following disclaimer in the documentation and/or other
-// materials provided with the distribution.
-// * The name of the contributors may not be used to endorse or promote products
-// derived from this software without specific prior written permission.
-
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-// OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#pragma once
-
-#include <QDebug>
-#include <QString>
-#include <QDateTime>
-
-namespace QsLogging
-{
-class Destination;
-enum Level
-{
- TraceLevel = 0,
- DebugLevel,
- InfoLevel,
- WarnLevel,
- ErrorLevel,
- FatalLevel,
- UnknownLevel
-};
-
-class LoggerImpl; // d pointer
-class Logger
-{
-public:
- static Logger &instance()
- {
- static Logger staticLog;
- return staticLog;
- }
-
- //! Adds a log message destination. Don't add null destinations.
- void addDestination(Destination *destination);
- //! Removes the given destination from the logger.
- void removeDestination(Destination* destination);
- //! Logging at a level < 'newLevel' will be ignored
- void setLoggingLevel(Level newLevel);
- //! The default level is INFO
- Level loggingLevel() const;
- //! msecs since the logger was initialized
- qint64 timeSinceStart() const;
- //! time when the logger was initialized
- QDateTime timeOfStart() const;
-
-
- //! The helper forwards the streaming to QDebug and builds the final
- //! log message.
- class Helper
- {
- public:
- explicit Helper(Level logLevel);
- ~Helper();
- QDebug &stream()
- {
- return qtDebug;
- }
-
- private:
- void writeToLog();
-
- Level level;
- QString buffer;
- QDebug qtDebug;
- };
-
-private:
- Logger();
- Logger(const Logger &);
- Logger &operator=(const Logger &);
- ~Logger();
-
- void write(const QString &message);
-
- LoggerImpl *d;
-};
-
-} // end namespace
-
-#define QLOG_TRACE() \
- if (QsLogging::Logger::instance().loggingLevel() <= QsLogging::TraceLevel) \
- QsLogging::Logger::Helper(QsLogging::TraceLevel).stream()
-#define QLOG_DEBUG() \
- if (QsLogging::Logger::instance().loggingLevel() <= QsLogging::DebugLevel) \
- QsLogging::Logger::Helper(QsLogging::DebugLevel).stream()
-#define QLOG_INFO() \
- if (QsLogging::Logger::instance().loggingLevel() <= QsLogging::InfoLevel) \
- QsLogging::Logger::Helper(QsLogging::InfoLevel).stream()
-#define QLOG_WARN() \
- if (QsLogging::Logger::instance().loggingLevel() <= QsLogging::WarnLevel) \
- QsLogging::Logger::Helper(QsLogging::WarnLevel).stream()
-#define QLOG_ERROR() \
- if (QsLogging::Logger::instance().loggingLevel() <= QsLogging::ErrorLevel) \
- QsLogging::Logger::Helper(QsLogging::ErrorLevel).stream()
-#define QLOG_FATAL() QsLogging::Logger::Helper(QsLogging::FatalLevel).stream()
-
-/*
-#define QLOG_TRACE() \
- if (QsLogging::Logger::instance().loggingLevel() <= QsLogging::TraceLevel) \
- QsLogging::Logger::Helper(QsLogging::TraceLevel).stream() << __FILE__ << '@' << __LINE__
-#define QLOG_DEBUG() \
- if (QsLogging::Logger::instance().loggingLevel() <= QsLogging::DebugLevel) \
- QsLogging::Logger::Helper(QsLogging::DebugLevel).stream() << __FILE__ << '@' << __LINE__
-#define QLOG_INFO() \
- if (QsLogging::Logger::instance().loggingLevel() <= QsLogging::InfoLevel) \
- QsLogging::Logger::Helper(QsLogging::InfoLevel).stream() << __FILE__ << '@' << __LINE__
-#define QLOG_WARN() \
- if (QsLogging::Logger::instance().loggingLevel() <= QsLogging::WarnLevel) \
- QsLogging::Logger::Helper(QsLogging::WarnLevel).stream() << __FILE__ << '@' << __LINE__
-#define QLOG_ERROR() \
- if (QsLogging::Logger::instance().loggingLevel() <= QsLogging::ErrorLevel) \
- QsLogging::Logger::Helper(QsLogging::ErrorLevel).stream() << __FILE__ << '@' << __LINE__
-#define QLOG_FATAL() \
- QsLogging::Logger::Helper(QsLogging::FatalLevel).stream() << __FILE__ << '@' << __LINE__
-*/
diff --git a/logger/QsLogDest.cpp b/logger/QsLogDest.cpp
deleted file mode 100644
index 4a47060e..00000000
--- a/logger/QsLogDest.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright (c) 2010, Razvan Petru
-// All rights reserved.
-
-// Redistribution and use in source and binary forms, with or without modification,
-// are permitted provided that the following conditions are met:
-
-// * Redistributions of source code must retain the above copyright notice, this
-// list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice, this
-// list of conditions and the following disclaimer in the documentation and/or other
-// materials provided with the distribution.
-// * The name of the contributors may not be used to endorse or promote products
-// derived from this software without specific prior written permission.
-
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-// OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#include "QsLogDest.h"
-#include "QsDebugOutput.h"
-#include "QsLog.h"
-#include <QFile>
-#include <QTextStream>
-#include <QString>
-
-namespace QsLogging
-{
-
-Destination::~Destination()
-{
- Logger::instance().removeDestination(this);
- QsDebugOutput::output("Removed logger destination.");
-}
-
-//! file message sink
-class FileDestination : public Destination
-{
-public:
- FileDestination(const QString &filePath);
- virtual void write(const QString &message);
-
-private:
- QFile mFile;
- QTextStream mOutputStream;
-};
-
-FileDestination::FileDestination(const QString &filePath)
-{
- mFile.setFileName(filePath);
- mFile.open(QFile::WriteOnly | QFile::Text |
- QFile::Truncate); // fixme: should throw on failure
- mOutputStream.setDevice(&mFile);
-}
-
-void FileDestination::write(const QString &message)
-{
- mOutputStream << message << endl;
- mOutputStream.flush();
-}
-
-//! debugger sink
-class DebugOutputDestination : public Destination
-{
-public:
- virtual void write(const QString &message);
-};
-
-void DebugOutputDestination::write(const QString &message)
-{
- QsDebugOutput::output(message);
-}
-
-class QDebugDestination : public Destination
-{
-public:
- virtual void write(const QString &message)
- {
- qDebug() << message;
- };
-};
-
-DestinationPtr DestinationFactory::MakeFileDestination(const QString &filePath)
-{
- return DestinationPtr(new FileDestination(filePath));
-}
-
-DestinationPtr DestinationFactory::MakeDebugOutputDestination()
-{
- return DestinationPtr(new DebugOutputDestination);
-}
-
-DestinationPtr DestinationFactory::MakeQDebugDestination()
-{
- return DestinationPtr(new QDebugDestination);
-}
-
-} // end namespace
diff --git a/logger/QsLogDest.h b/logger/QsLogDest.h
deleted file mode 100644
index a8000022..00000000
--- a/logger/QsLogDest.h
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2010, Razvan Petru
-// All rights reserved.
-
-// Redistribution and use in source and binary forms, with or without modification,
-// are permitted provided that the following conditions are met:
-
-// * Redistributions of source code must retain the above copyright notice, this
-// list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice, this
-// list of conditions and the following disclaimer in the documentation and/or other
-// materials provided with the distribution.
-// * The name of the contributors may not be used to endorse or promote products
-// derived from this software without specific prior written permission.
-
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-// OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#pragma once
-
-#include <memory>
-
-class QString;
-
-namespace QsLogging
-{
-
-class Destination
-{
-public:
- virtual ~Destination();
- virtual void write(const QString &message) = 0;
-};
-typedef std::shared_ptr<Destination> DestinationPtr;
-
-//! Creates logging destinations/sinks. The caller will have ownership of
-//! the newly created destinations.
-class DestinationFactory
-{
-public:
- static DestinationPtr MakeFileDestination(const QString &filePath);
- static DestinationPtr MakeDebugOutputDestination();
- static DestinationPtr MakeQDebugDestination();
-};
-
-} // end namespace