CommandLineToolkit
29 строк · 689.0 Байт
1/*
2* Copyright (c) Avito Tech LLC
3*/
4
5import AtomicModels
6import CLTLoggingModels
7import Foundation
8
9public final class RedirectingLoggerHandler: LoggerHandler {
10private let target: AtomicValue<LoggerHandler>
11
12public init(
13target: LoggerHandler = NoOpLoggerHandler()
14) {
15self.target = AtomicValue(target)
16}
17
18public func setTarget(_ newTarget: LoggerHandler) {
19target.set(newTarget)
20}
21
22public func handle(logEntry: LogEntry) {
23target.currentValue().handle(logEntry: logEntry)
24}
25
26public func tearDownLogging(timeout: TimeInterval) {
27target.currentValue().tearDownLogging(timeout: timeout)
28}
29}
30