00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "MsgLogger/MsgHandlerStdStreams.h"
00023
00024
00025
00026
00027 extern "C" {
00028 }
00029
00030
00031
00032
00033 #include <iostream>
00034
00035
00036
00037
00038 #include "MsgLogger/MsgFormatter.h"
00039 #include "MsgLogger/MsgLogLevel.h"
00040 #include "MsgLogger/MsgLogRecord.h"
00041
00042
00043
00044
00045
00046 namespace MsgLogger {
00047
00048
00049
00050
00051
00052
00053 MsgHandlerStdStreams::MsgHandlerStdStreams()
00054 : MsgHandler()
00055 , m_mutex()
00056 {
00057 }
00058
00059
00060 MsgHandlerStdStreams::~MsgHandlerStdStreams()
00061 {
00062 }
00063
00064
00065 bool
00066 MsgHandlerStdStreams::log ( const MsgLogRecord& record ) const
00067 {
00068 if ( ! logging( record.level() ) ) {
00069 return false ;
00070 }
00071
00072 static bool threadSafe = getenv("MSGLOGTHREADSAFE") ;
00073 if (threadSafe) m_mutex.lock() ;
00074
00075 if ( record.level() <= MsgLogLevel::info ) {
00076 formatter().format ( record, std::cout ) ;
00077 std::cout << std::endl ;
00078 } else {
00079 formatter().format ( record, std::cerr ) ;
00080 std::cerr << std::endl ;
00081 }
00082
00083 if (threadSafe) m_mutex.unlock() ;
00084
00085 return true ;
00086 }
00087
00088 }