CommandLineToolkit

Форк
0
/
AggregatedLoggerHandler.swift 
40 строк · 993.0 Байт
1
/*
2
 * Copyright (c) Avito Tech LLC
3
 */
4

5
import Dispatch
6
import CLTLoggingModels
7
import Foundation
8

9
public final class AggregatedLoggerHandler: LoggerHandler {
10
    private var handlers: [LoggerHandler]
11
    private let syncQueue = DispatchQueue(label: "AggregatedLoggerHandler.syncQueue")
12
    
13
    public init(handlers: [LoggerHandler]) {
14
        self.handlers = handlers
15
    }
16
    
17
    public func handle(logEntry: LogEntry) {
18
        for handler in allHandlers_safe {
19
            handler.handle(logEntry: logEntry)
20
        }
21
    }
22
    
23
    public func append(handler: LoggerHandler) {
24
        syncQueue.sync {
25
            handlers.append(handler)
26
        }
27
    }
28
    
29
    private var allHandlers_safe: [LoggerHandler] {
30
        return syncQueue.sync { handlers }
31
    }
32
    
33
    public func tearDownLogging(timeout: TimeInterval) {
34
        for handler in allHandlers_safe {
35
            syncQueue.async {
36
                handler.tearDownLogging(timeout: timeout)
37
            }
38
        }
39
    }
40
}
41

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.