125 lines
3 KiB
Swift
125 lines
3 KiB
Swift
//
|
|
// Copyright 2023 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
import Foundation
|
|
|
|
open class PrefixedLogger {
|
|
private let prefix: String
|
|
private var suffix: String
|
|
|
|
public static func empty() -> PrefixedLogger {
|
|
return PrefixedLogger(rawPrefix: "")
|
|
}
|
|
|
|
public init(prefix: String, suffix: String? = nil) {
|
|
self.prefix = "\(prefix) "
|
|
self.suffix = suffix.map { " \($0)" } ?? ""
|
|
}
|
|
|
|
private init(rawPrefix: String, rawSuffix: String? = nil) {
|
|
self.prefix = rawPrefix
|
|
self.suffix = rawSuffix ?? ""
|
|
}
|
|
|
|
public func suffixed(with extraSuffix: String) -> PrefixedLogger {
|
|
return PrefixedLogger(
|
|
prefix: prefix,
|
|
suffix: suffix + " \(extraSuffix)"
|
|
)
|
|
}
|
|
|
|
open func verbose(
|
|
_ logString: @autoclosure () -> String,
|
|
flushImmediately: Bool = false,
|
|
file: String = #fileID,
|
|
function: String = #function,
|
|
line: Int = #line
|
|
) {
|
|
Logger.verbose(
|
|
buildLogString(logString()),
|
|
file: file,
|
|
function: function,
|
|
line: line
|
|
)
|
|
|
|
if flushImmediately { flush() }
|
|
}
|
|
|
|
open func debug(
|
|
_ logString: @autoclosure () -> String,
|
|
flushImmediately: Bool = false,
|
|
file: String = #fileID,
|
|
function: String = #function,
|
|
line: Int = #line
|
|
) {
|
|
Logger.debug(
|
|
buildLogString(logString()),
|
|
file: file,
|
|
function: function,
|
|
line: line
|
|
)
|
|
|
|
if flushImmediately { flush() }
|
|
}
|
|
|
|
open func info(
|
|
_ logString: @autoclosure () -> String,
|
|
flushImmediately: Bool = false,
|
|
file: String = #fileID,
|
|
function: String = #function,
|
|
line: Int = #line
|
|
) {
|
|
Logger.info(
|
|
buildLogString(logString()),
|
|
file: file,
|
|
function: function,
|
|
line: line
|
|
)
|
|
|
|
if flushImmediately { flush() }
|
|
}
|
|
|
|
open func warn(
|
|
_ logString: @autoclosure () -> String,
|
|
flushImmediately: Bool = false,
|
|
file: String = #fileID,
|
|
function: String = #function,
|
|
line: Int = #line
|
|
) {
|
|
Logger.warn(
|
|
buildLogString(logString()),
|
|
file: file,
|
|
function: function,
|
|
line: line
|
|
)
|
|
|
|
if flushImmediately { flush() }
|
|
}
|
|
|
|
open func error(
|
|
_ logString: @autoclosure () -> String,
|
|
flushImmediately: Bool = false,
|
|
file: String = #fileID,
|
|
function: String = #function,
|
|
line: Int = #line
|
|
) {
|
|
Logger.error(
|
|
buildLogString(logString()),
|
|
file: file,
|
|
function: function,
|
|
line: line
|
|
)
|
|
|
|
if flushImmediately { flush() }
|
|
}
|
|
|
|
open func flush() {
|
|
Logger.flush()
|
|
}
|
|
|
|
private func buildLogString(_ logString: String) -> String {
|
|
"\(prefix)\(logString)\(suffix)"
|
|
}
|
|
}
|