77 lines
3.4 KiB
Swift
77 lines
3.4 KiB
Swift
//
|
|
// BasicLogConfiguration.swift
|
|
// CleanroomLogger
|
|
//
|
|
// Created by Evan Maloney on 5/5/15.
|
|
// Copyright © 2015 Gilt Groupe. All rights reserved.
|
|
//
|
|
|
|
/**
|
|
In case the name didn't give it away, the `BasicLogConfiguration` class
|
|
provides a basic implementation of the `LogConfiguration` protocol.
|
|
*/
|
|
open class BasicLogConfiguration: LogConfiguration
|
|
{
|
|
/** The minimum `LogSeverity` supported by the configuration. */
|
|
open let minimumSeverity: LogSeverity
|
|
|
|
/** The `LogFilter`s to use when deciding whether a given `LogEntry` should
|
|
be passed along to the receiver's `recorders`. If any filter returns
|
|
`false` from `shouldRecordLogEntry(_:)`, the `LogEntry` will be silently
|
|
ignored when being processed for this `LogConfiguration`. */
|
|
open let filters: [LogFilter]
|
|
|
|
/** The `LogRecorder`s to use for recording any `LogEntry` that has passed
|
|
the filtering process. */
|
|
open let recorders: [LogRecorder]
|
|
|
|
/** A flag indicating whether synchronous mode will be used when passing
|
|
`LogEntry` instances to the receiver's `recorders`. Synchronous mode is
|
|
helpful while debugging, as it ensures that logs are always up-to-date
|
|
when debug breakpoints are hit. However, synchronous mode can have a
|
|
negative influence on performance and is therefore not recommended for use
|
|
in production code. */
|
|
open let synchronousMode: Bool
|
|
|
|
/** For organizational purposes, a given `LogConfiguration` may in turn
|
|
contain one or more additional `LogConfiguration`s. Each contained
|
|
`LogConfiguration` is an entirely separate entity; children do not inherit
|
|
any state from parent containers. */
|
|
open let configurations: [LogConfiguration]?
|
|
|
|
/**
|
|
Initializes a new `BasicLogConfiguration` instance.
|
|
|
|
- parameter minimumSeverity: The minimum `LogSeverity` supported by the
|
|
configuration. Log entries having a `severity` less than `minimumSeverity`
|
|
will not be passed to the receiver's `recorders`.
|
|
|
|
- parameter filters: The `LogFilter`s to use when deciding whether a given
|
|
`LogEntry` should be passed along to the receiver's `LogRecorder`s.
|
|
|
|
- parameter recorders: The `LogRecorder`s to use for recording any
|
|
`LogEntry` that has passed the filtering process.
|
|
|
|
- parameter synchronousMode: Determines whether synchronous mode will be
|
|
used when passing `LogEntry` instances to the receiver's `recorders`.
|
|
Synchronous mode is helpful while debugging, as it ensures that logs are
|
|
always up-to-date when debug breakpoints are hit. However, synchronous
|
|
mode can have a negative influence on performance and is therefore not
|
|
recommended for use in production code.
|
|
|
|
- parameter configurations: Optional `LogConfiguration`s. For
|
|
organizational purposes, a given `LogConfiguration` may in turn contain
|
|
one or more additional `LogConfiguration`s. Note that these are handled
|
|
as entirely separate entities; the receiver's state does not affect the
|
|
behavior of the contained configurations in any way.
|
|
*/
|
|
public init(minimumSeverity: LogSeverity = .info, filters: [LogFilter] = [], recorders: [LogRecorder] = [], synchronousMode: Bool = false, configurations: [LogConfiguration]? = nil)
|
|
{
|
|
self.minimumSeverity = minimumSeverity
|
|
self.filters = filters
|
|
self.synchronousMode = synchronousMode
|
|
self.recorders = recorders
|
|
self.configurations = configurations
|
|
}
|
|
}
|