00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00038 #include "blocxx/BLOCXX_config.h"
00039 #include "blocxx/AppenderLogger.hpp"
00040 #include "blocxx/MultiAppender.hpp"
00041 #include "blocxx/Assertion.hpp"
00042
00043 #ifdef BLOCXX_WIN32
00044 #include <algorithm>
00045 #endif
00046
00047 namespace BLOCXX_NAMESPACE
00048 {
00049
00051 AppenderLogger::AppenderLogger(const String& defaultComponent, const LogAppenderRef& appender)
00052 : Logger(defaultComponent, LogAppenderRef(new MultiAppender(appender)))
00053 {
00054 }
00055
00057 AppenderLogger::AppenderLogger(const String& defaultComponent, const Array<LogAppenderRef>& appenders)
00058 : Logger(defaultComponent, LogAppenderRef(new MultiAppender(appenders)))
00059 {
00060 }
00061
00063 AppenderLogger::AppenderLogger(const String& defaultComponent, ELogLevel logLevel, const LogAppenderRef& appender)
00064 : Logger(defaultComponent, LogAppenderRef(new MultiAppender(appender)))
00065 {
00066 setLogLevel(logLevel);
00067 }
00068
00070 AppenderLogger::AppenderLogger(const String& defaultComponent, ELogLevel logLevel, const Array<LogAppenderRef>& appenders)
00071 : Logger(defaultComponent, LogAppenderRef(new MultiAppender(appenders)))
00072 {
00073 setLogLevel(logLevel);
00074 }
00075
00077 AppenderLogger::~AppenderLogger()
00078 {
00079 }
00080
00082 void
00083 AppenderLogger::addLogAppender(const LogAppenderRef& appender)
00084 {
00085 MultiAppenderRef maref = m_appender.cast_to<MultiAppender>();
00086 BLOCXX_ASSERT(maref);
00087 maref->addLogAppender(appender);
00088 }
00089
00091 ELogLevel
00092 AppenderLogger::getLevel(
00093 const Array<LogAppenderRef>& appenders)
00094 {
00095 ELogLevel rv = E_FATAL_ERROR_LEVEL;
00096 for (size_t i = 0; i < appenders.size(); ++i)
00097 {
00098 rv = std::max(rv, appenders[i]->getLogLevel());
00099 }
00100 return rv;
00101 }
00102
00103 }
00104
00105
00106
00107
00108
00109