diff options
author | Devtools Arcadia <arcadia-devtools@yandex-team.ru> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /contrib/libs/poco/Foundation/include/Poco/LoggingFactory.h | |
download | ydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'contrib/libs/poco/Foundation/include/Poco/LoggingFactory.h')
-rw-r--r-- | contrib/libs/poco/Foundation/include/Poco/LoggingFactory.h | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/contrib/libs/poco/Foundation/include/Poco/LoggingFactory.h b/contrib/libs/poco/Foundation/include/Poco/LoggingFactory.h new file mode 100644 index 0000000000..c851c3f907 --- /dev/null +++ b/contrib/libs/poco/Foundation/include/Poco/LoggingFactory.h @@ -0,0 +1,92 @@ +// +// LoggingFactory.h +// +// Library: Foundation +// Package: Logging +// Module: LoggingFactory +// +// Definition of the LoggingFactory class. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_LoggingFactory_INCLUDED +#define Foundation_LoggingFactory_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/DynamicFactory.h" +#include "Poco/Channel.h" +#include "Poco/Formatter.h" + + +namespace Poco { + + +class Foundation_API LoggingFactory + /// An extensible factory for channels and formatters. + /// + /// The following channel classes are pre-registered: + /// - AsyncChannel + /// - ConsoleChannel + /// - EventLogChannel (Windows platforms only) + /// - FileChannel + /// - FormattingChannel + /// - NullChannel + /// - SplitterChannel + /// - SyslogChannel (Unix platforms only) + /// + /// The following formatter classes are pre-registered: + /// - PatternFormatter +{ +public: + typedef AbstractInstantiator<Channel> ChannelInstantiator; + typedef AbstractInstantiator<Formatter> FormatterFactory; + + LoggingFactory(); + /// Creates the LoggingFactory. + /// + /// Automatically registers class factories for the + /// built-in channel and formatter classes. + + ~LoggingFactory(); + /// Destroys the LoggingFactory. + + void registerChannelClass(const std::string& className, ChannelInstantiator* pFactory); + /// Registers a channel class with the LoggingFactory. + + void registerFormatterClass(const std::string& className, FormatterFactory* pFactory); + /// Registers a formatter class with the LoggingFactory. + + Channel* createChannel(const std::string& className) const; + /// Creates a new Channel instance from specified class. + /// + /// Throws a NotFoundException if the specified channel class + /// has not been registered. + + Formatter* createFormatter(const std::string& className) const; + /// Creates a new Formatter instance from specified class. + /// + /// Throws a NotFoundException if the specified formatter class + /// has not been registered. + + static LoggingFactory& defaultFactory(); + /// Returns a reference to the default + /// LoggingFactory. + +private: + void registerBuiltins(); + + DynamicFactory<Channel> _channelFactory; + DynamicFactory<Formatter> _formatterFactory; +}; + + +} // namespace Poco + + +#endif // Foundation_LoggingFactory_INCLUDED |