Emcee

Форк
0
/
AggregatedLoggerHandler.swift 
36 строк · 970.0 Байт
1
import Dispatch
2
import EmceeLoggingModels
3
import Foundation
4

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

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

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

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

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