| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- //
- // LoggingFactory.cpp
- //
- // $Id: //poco/1.4/Foundation/src/LoggingFactory.cpp#3 $
- //
- // Library: Foundation
- // Package: Logging
- // Module: LoggingFactory
- //
- // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
- // and Contributors.
- //
- // SPDX-License-Identifier: BSL-1.0
- //
- #include "Poco/LoggingFactory.h"
- #include "Poco/SingletonHolder.h"
- #include "Poco/AsyncChannel.h"
- #include "Poco/ConsoleChannel.h"
- #include "Poco/FileChannel.h"
- #include "Poco/FormattingChannel.h"
- #include "Poco/SplitterChannel.h"
- #include "Poco/NullChannel.h"
- #if defined(POCO_OS_FAMILY_UNIX) && !defined(POCO_NO_SYSLOGCHANNEL)
- #include "Poco/SyslogChannel.h"
- #endif
- #if defined(POCO_OS_FAMILY_VMS)
- #include "Poco/OpcomChannel.h"
- #endif
- #if defined(POCO_OS_FAMILY_WINDOWS) && !defined(_WIN32_WCE)
- #include "Poco/EventLogChannel.h"
- #include "Poco/WindowsConsoleChannel.h"
- #endif
- #include "Poco/PatternFormatter.h"
- namespace Poco {
- LoggingFactory::LoggingFactory()
- {
- registerBuiltins();
- }
- LoggingFactory::~LoggingFactory()
- {
- }
-
- void LoggingFactory::registerChannelClass(const std::string& className, ChannelInstantiator* pFactory)
- {
- _channelFactory.registerClass(className, pFactory);
- }
-
- void LoggingFactory::registerFormatterClass(const std::string& className, FormatterFactory* pFactory)
- {
- _formatterFactory.registerClass(className, pFactory);
- }
- Channel* LoggingFactory::createChannel(const std::string& className) const
- {
- return _channelFactory.createInstance(className);
- }
-
- Formatter* LoggingFactory::createFormatter(const std::string& className) const
- {
- return _formatterFactory.createInstance(className);
- }
- namespace
- {
- static SingletonHolder<LoggingFactory> sh;
- }
- LoggingFactory& LoggingFactory::defaultFactory()
- {
- return *sh.get();
- }
- void LoggingFactory::registerBuiltins()
- {
- _channelFactory.registerClass("AsyncChannel", new Instantiator<AsyncChannel, Channel>);
- #if defined(POCO_OS_FAMILY_WINDOWS) && !defined(_WIN32_WCE)
- _channelFactory.registerClass("ConsoleChannel", new Instantiator<WindowsConsoleChannel, Channel>);
- _channelFactory.registerClass("ColorConsoleChannel", new Instantiator<WindowsColorConsoleChannel, Channel>);
- #else
- _channelFactory.registerClass("ConsoleChannel", new Instantiator<ConsoleChannel, Channel>);
- _channelFactory.registerClass("ColorConsoleChannel", new Instantiator<ColorConsoleChannel, Channel>);
- #endif
- #ifndef POCO_NO_FILECHANNEL
- _channelFactory.registerClass("FileChannel", new Instantiator<FileChannel, Channel>);
- #endif
- _channelFactory.registerClass("FormattingChannel", new Instantiator<FormattingChannel, Channel>);
- #ifndef POCO_NO_SPLITTERCHANNEL
- _channelFactory.registerClass("SplitterChannel", new Instantiator<SplitterChannel, Channel>);
- #endif
- _channelFactory.registerClass("NullChannel", new Instantiator<NullChannel, Channel>);
- #if defined(POCO_OS_FAMILY_UNIX)
- #ifndef POCO_NO_SYSLOGCHANNEL
- _channelFactory.registerClass("SyslogChannel", new Instantiator<SyslogChannel, Channel>);
- #endif
- #endif
- #if defined(POCO_OS_FAMILY_VMS)
- _channelFactory.registerClass("OpcomChannel", new Instantiator<OpcomChannel, Channel>);
- #endif
- #if defined(POCO_OS_FAMILY_WINDOWS) && !defined(_WIN32_WCE)
- _channelFactory.registerClass("EventLogChannel", new Instantiator<EventLogChannel, Channel>);
- #endif
- _formatterFactory.registerClass("PatternFormatter", new Instantiator<PatternFormatter, Formatter>);
- }
- } // namespace Poco
|