TM-SGNL-iOS/SignalServiceKit/Logging/Logger.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

92 lines
2.5 KiB
Swift

//
// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import CocoaLumberjack
import Foundation
public enum Logger {
/// Logs `logString()` if the level represented by `flag` is enabled.
public static func log(
_ logString: @autoclosure () -> String,
flag: DDLogFlag,
file: String,
function: String,
line: Int
) {
guard ShouldLogFlag(flag) else {
return
}
DDLog.log(asynchronous: true, message: DDLogMessage(
message: logString(),
level: ddLogLevel,
flag: flag,
context: 0,
file: file,
function: function,
line: UInt(line),
tag: nil,
timestamp: nil
))
}
private static func log(
_ logString: @autoclosure () -> String,
flag: DDLogFlag,
fileID: String,
function: String,
line: Int
) {
log(logString(), flag: flag, file: (fileID as NSString).lastPathComponent, function: function, line: line)
}
public static func verbose(
_ logString: @autoclosure () -> String,
file: String = #fileID,
function: String = #function,
line: Int = #line
) {
log(logString(), flag: .verbose, fileID: file, function: function, line: line)
}
public static func debug(
_ logString: @autoclosure () -> String,
file: String = #fileID,
function: String = #function,
line: Int = #line
) {
log(logString(), flag: .debug, fileID: file, function: function, line: line)
}
public static func info(
_ logString: @autoclosure () -> String,
file: String = #fileID,
function: String = #function,
line: Int = #line
) {
log(logString(), flag: .info, fileID: file, function: function, line: line)
}
public static func warn(
_ logString: @autoclosure () -> String,
file: String = #fileID,
function: String = #function,
line: Int = #line
) {
log(logString(), flag: .warning, fileID: file, function: function, line: line)
}
public static func error(
_ logString: @autoclosure () -> String,
file: String = #fileID,
function: String = #function,
line: Int = #line
) {
log(logString(), flag: .error, fileID: file, function: function, line: line)
}
public static func flush() {
DDLog.flushLog()
}
}