diff options
author | Andreas Baumann <abaumann@yahoo.com> | 2012-09-05 16:44:27 +0200 |
---|---|---|
committer | Andreas Baumann <abaumann@yahoo.com> | 2012-09-05 16:44:27 +0200 |
commit | 2e2ef8b0d481bdde9c727defe51b2a31ddbc0c52 (patch) | |
tree | 1c2d4b1025c8f655c0c95f1dbd9f848258fb9059 /src | |
parent | eb1a37eb3dedb7bce6635faccc11ad83229e0622 (diff) | |
download | crawler-2e2ef8b0d481bdde9c727defe51b2a31ddbc0c52.tar.gz crawler-2e2ef8b0d481bdde9c727defe51b2a31ddbc0c52.tar.bz2 |
added Windows WinDbg log sink
some renames and cleanups
Diffstat (limited to 'src')
-rwxr-xr-x[-rw-r--r--] | src/ConsoleLogSink.cpp | 2 | ||||
-rwxr-xr-x | src/GNUmakefile | 2 | ||||
-rwxr-xr-x[-rw-r--r--] | src/Logger.cpp | 21 | ||||
-rwxr-xr-x | src/Logger.hpp | 1 | ||||
-rwxr-xr-x | src/Makefile.W32 | 3 | ||||
-rwxr-xr-x | src/SyslogLogSink.cpp (renamed from src/SyslogSink.cpp) | 12 | ||||
-rwxr-xr-x | src/SyslogLogSink.hpp (renamed from src/SyslogSink.hpp) | 6 | ||||
-rwxr-xr-x | src/WinDbgLogSink.cpp | 22 | ||||
-rwxr-xr-x | src/WinDbgLogSink.hpp | 14 |
9 files changed, 69 insertions, 14 deletions
diff --git a/src/ConsoleLogSink.cpp b/src/ConsoleLogSink.cpp index e986961..84a1ebd 100644..100755 --- a/src/ConsoleLogSink.cpp +++ b/src/ConsoleLogSink.cpp @@ -4,7 +4,7 @@ using namespace std; -void ConsoleLogSink::log( const LogLevel level, const std::string &msg ) +void ConsoleLogSink::log( const LogLevel level, const string &msg ) { if( level > reportingLevel( ) ) return; diff --git a/src/GNUmakefile b/src/GNUmakefile index 267e69c..d44dd97 100755 --- a/src/GNUmakefile +++ b/src/GNUmakefile @@ -34,7 +34,7 @@ CPP_OBJS = \ Logger.o \ ConsoleLogSink.o \ FileLogSink.o \ - SyslogSink.o \ + SyslogLogSink.o \ URL.o \ MIMEType.o \ SpoolRewindInputStream.o diff --git a/src/Logger.cpp b/src/Logger.cpp index 726b6fc..57b1341 100644..100755 --- a/src/Logger.cpp +++ b/src/Logger.cpp @@ -2,7 +2,10 @@ #include "LogSink.hpp" #include "ConsoleLogSink.hpp" #include "FileLogSink.hpp" -#include "SyslogSink.hpp" +#include "SyslogLogSink.hpp" +#ifdef _WIN32 +#include "WinDbgLogSink.hpp" +#endif #include <algorithm> #include <list> @@ -40,6 +43,7 @@ class LoggerImpl void openConsoleLog( const LogLevel level ); void openFileLog( const LogLevel level, const std::string &filename ); void openSyslog( const LogLevel level, const string &ident, const string &facility ); + void openWinDbgLog( const LogLevel level ); public: LoggerImpl( ); @@ -96,7 +100,16 @@ void LoggerImpl::openFileLog( const LogLevel level, const string &filename ) void LoggerImpl::openSyslog( const LogLevel level, const string &ident, const string &facility ) { - addSink( new SyslogSink( level, ident, facility ) ); + addSink( new SyslogLogSink( level, ident, facility ) ); +} + +void LoggerImpl::openWinDbgLog( const LogLevel level ) +{ +#ifdef _WIN32 + addSink( new WinDbgLogSink( level ) ); +#else + LOG( logWARNING ) << "WinDbg logger is only available on Windows"; +#endif } string Logger::toString( const LogLevel level ) @@ -163,3 +176,7 @@ void Logger::openSyslog( const LogLevel level, const string &ident, const string m_impl->openSyslog( level, ident, facility ); } +void Logger::openWinDbgLog( const LogLevel level ) +{ + m_impl->openWinDbgLog( level ); +} diff --git a/src/Logger.hpp b/src/Logger.hpp index ad75b2e..dc514ae 100755 --- a/src/Logger.hpp +++ b/src/Logger.hpp @@ -39,6 +39,7 @@ class Logger : public Singleton< Logger > void openConsoleLog( const LogLevel level ); void openFileLog( const LogLevel level, const std::string &filename ); void openSyslog( const LogLevel level, const std::string &ident, const std::string &facility ); + void openWinDbgLog( const LogLevel level ); protected: Logger( ); diff --git a/src/Makefile.W32 b/src/Makefile.W32 index 6fe442f..7426c18 100755 --- a/src/Makefile.W32 +++ b/src/Makefile.W32 @@ -22,7 +22,8 @@ LOCAL_STATIC_LIB_OBJS = \ Logger.obj \ ConsoleLogSink.obj \ FileLogSink.obj \ - SyslogSink.obj \ + SyslogLogSink.obj \ + WinDbgLogSink.obj \ URL.obj \ MIMEType.obj \ SpoolRewindInputStream.obj diff --git a/src/SyslogSink.cpp b/src/SyslogLogSink.cpp index 5f9715e..c2716a9 100755 --- a/src/SyslogSink.cpp +++ b/src/SyslogLogSink.cpp @@ -1,4 +1,4 @@ -#include "SyslogSink.hpp" +#include "SyslogLogSink.hpp" #ifndef _WIN32 #include <syslog.h> @@ -8,25 +8,25 @@ using namespace std; -SyslogSink::SyslogSink( const LogLevel level, const string &ident, const string &facility ) +SyslogLogSink::SyslogLogSink( const LogLevel level, const string &ident, const string &facility ) : LogSink( level ), m_ident( ident ), m_facility( facility ) { openlog( m_ident.c_str( ), LOG_PID, facilityFromString( m_facility ) ); } -SyslogSink::~SyslogSink( ) +SyslogLogSink::~SyslogLogSink( ) { closelog( ); } -void SyslogSink::log( const LogLevel level, const string &msg ) +void SyslogLogSink::log( const LogLevel level, const string &msg ) { if( level > reportingLevel( ) ) return; syslog( levelToSyslogLevel( level ), "%s", msg.c_str( ) ); } -int SyslogSink::levelToSyslogLevel( const LogLevel level ) +int SyslogLogSink::levelToSyslogLevel( const LogLevel level ) { switch( level ) { case logFATAL: return LOG_ALERT; @@ -48,7 +48,7 @@ int SyslogSink::levelToSyslogLevel( const LogLevel level ) } } -int SyslogSink::facilityFromString( const std::string &facility ) +int SyslogLogSink::facilityFromString( const std::string &facility ) { if( facility == "kern" ) return LOG_KERN; else if( facility == "user" ) return LOG_USER; diff --git a/src/SyslogSink.hpp b/src/SyslogLogSink.hpp index 5a879d5..64e52f1 100755 --- a/src/SyslogSink.hpp +++ b/src/SyslogLogSink.hpp @@ -5,12 +5,12 @@ #include <string> -class SyslogSink : public LogSink +class SyslogLogSink : public LogSink { public: - SyslogSink( const LogLevel level, const std::string &ident, const std::string &facility ); + SyslogLogSink( const LogLevel level, const std::string &ident, const std::string &facility ); - ~SyslogSink( ); + ~SyslogLogSink( ); void log( const LogLevel level, const std::string &msg ); diff --git a/src/WinDbgLogSink.cpp b/src/WinDbgLogSink.cpp new file mode 100755 index 0000000..f5a830c --- /dev/null +++ b/src/WinDbgLogSink.cpp @@ -0,0 +1,22 @@ +#include "WinDbgLogSink.hpp" + +#include <sstream> + +#define WIN32_MEAN_AND_LEAN +#include <windows.h> + +using namespace std; + +void WinDbgLogSink::log( const LogLevel level, const string &msg ) +{ + if( level > reportingLevel( ) ) return; + + ostringstream ss; + + ss << Logger::toString( level ) + << ": " + << msg + << "\r\n"; + + OutputDebugString( ss.str( ).c_str( ) ); +} diff --git a/src/WinDbgLogSink.hpp b/src/WinDbgLogSink.hpp new file mode 100755 index 0000000..f7caa86 --- /dev/null +++ b/src/WinDbgLogSink.hpp @@ -0,0 +1,14 @@ +#ifndef __WINDBG_LOGSINK_H +#define __WINDBG_LOGSINK_H + +#include "LogSink.hpp" + +class WinDbgLogSink : public LogSink +{ + public: + WinDbgLogSink( const LogLevel level ) : LogSink( level ) { } + + void log( const LogLevel level, const std::string &msg ); +}; + +#endif |