# Poco

# class LoggingFactory

Library: Foundation
Package: Logging
Header: Poco/LoggingFactory.h

## Description

An extensible factory for channels and formatters.

The following channel classes are pre-registered:

- AsyncChannel
- ConsoleChannel
- EventLogChannel (Windows platforms only)
- FileChannel
- FormattingChannel
- NullChannel
- OpcomChannel (OpenVMS only)
- SplitterChannel
- SyslogChannel (Unix platforms only)

The following formatter classes are pre-registered:

- PatternFormatter

## Member Summary

Member Functions: createChannel, createFormatter, defaultFactory, registerChannelClass, registerFormatterClass

## Types

### ChannelInstantiator

typedef AbstractInstantiator < Channel > ChannelInstantiator;

### FormatterFactory

typedef AbstractInstantiator < Formatter > FormatterFactory;

## Constructors

### LoggingFactory

LoggingFactory();

Creates the LoggingFactory.

Automatically registers class factories for the built-in channel and formatter classes.

## Destructor

### ~LoggingFactory

~LoggingFactory();

Destroys the LoggingFactory.

## Member Functions

### createChannel

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.

### createFormatter

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.

### defaultFactory

static LoggingFactory & defaultFactory();

Returns a reference to the default LoggingFactory.

### registerChannelClass

void registerChannelClass(
const std::string & className,
ChannelInstantiator * pFactory
);

Registers a channel class with the LoggingFactory.

### registerFormatterClass

void registerFormatterClass(
const std::string & className,
FormatterFactory * pFactory
);

Registers a formatter class with the LoggingFactory.