Digital PCT265 story ONEAPP-7249 - Pipe logs to system logger rather than stdout. Logging updates to categorize logs.
This commit is contained in:
parent
9b718ce0d4
commit
85747b146e
@ -8,13 +8,16 @@
|
|||||||
|
|
||||||
public protocol MVMCoreLoggingDelegateProtocol {
|
public protocol MVMCoreLoggingDelegateProtocol {
|
||||||
|
|
||||||
// Can be used to log different actions performed by the core.
|
/// Can be used to log different actions performed by the core.
|
||||||
func handleDebugMessage(_ message: String?)
|
func handleDebugMessage(_ message: String?)
|
||||||
|
|
||||||
|
/// Can be used to log a message under a particular cagetory.
|
||||||
|
func handleDebugMessage(_ message: String, category: String?)
|
||||||
|
|
||||||
// Can be used to choose how to log error objects.
|
/// Can be used to choose how to log error objects.
|
||||||
func addError(toLog errorObject: MVMCoreErrorObject)
|
func addError(toLog errorObject: MVMCoreErrorObject)
|
||||||
|
|
||||||
// Log that the load has finished.
|
/// Log that the load has finished.
|
||||||
func logLoadFinished(_ loadObject: MVMCoreLoadObject?, loadedViewController: MVMCoreViewControllerProtocol?, error: MVMCoreErrorObject?)
|
func logLoadFinished(_ loadObject: MVMCoreLoadObject?, loadedViewController: MVMCoreViewControllerProtocol?, error: MVMCoreErrorObject?)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,34 +7,31 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
import os
|
||||||
@objc public extension MVMCoreLoggingHandler {
|
|
||||||
@objc func print(with message: String) {
|
|
||||||
Swift.print(message)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public protocol CoreLogging {
|
public protocol CoreLogging {
|
||||||
func debugLog(_ string: String)
|
static var loggingCategory: String? { get }
|
||||||
|
|
||||||
var loggingPrefix: String { get }
|
var loggingPrefix: String { get }
|
||||||
}
|
}
|
||||||
|
|
||||||
public extension CoreLogging {
|
public extension CoreLogging {
|
||||||
|
|
||||||
|
static var loggingCategory: String? { return nil }
|
||||||
|
|
||||||
var loggingPrefix: String {
|
var loggingPrefix: String {
|
||||||
return String(describing: self)
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
static func debugLog(_ string: String) {
|
static func debugLog(_ string: String) {
|
||||||
#if LOGGING
|
#if LOGGING
|
||||||
MVMCoreLoggingHandler.shared()?.handleDebugMessage("\(String(describing: Self.self)) \(string)")
|
MVMCoreLoggingHandler.shared()?.handleDebugMessage(string, category: loggingCategory)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
func debugLog(_ string: String) {
|
func debugLog(_ string: String) {
|
||||||
#if LOGGING
|
#if LOGGING
|
||||||
MVMCoreLoggingHandler.shared()?.handleDebugMessage("\(loggingPrefix) " + string)
|
MVMCoreLoggingHandler.shared()?.handleDebugMessage("\(loggingPrefix)\(string)", category: Self.loggingCategory)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,9 +7,28 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
import os
|
||||||
|
|
||||||
@objc open class MVMCoreLoggingHandler: NSObject, MVMCoreLoggingDelegateProtocol {
|
@objc open class MVMCoreLoggingHandler: NSObject, MVMCoreLoggingDelegateProtocol {
|
||||||
|
|
||||||
|
public static let standardCategory = "General"
|
||||||
|
|
||||||
|
private let logger = Logger(subsystem: "MVMCoreLogging", category: standardCategory)
|
||||||
|
private var loggerCache = [String: Logger]()
|
||||||
|
|
||||||
|
open func getLogger(category: String?) -> Logger {
|
||||||
|
if let category {
|
||||||
|
if let logger = loggerCache[category] {
|
||||||
|
return logger
|
||||||
|
} else {
|
||||||
|
let logger = Logger(subsystem: Bundle.main.bundleIdentifier!, category: category)
|
||||||
|
loggerCache[category] = logger
|
||||||
|
return logger
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return logger
|
||||||
|
}
|
||||||
|
|
||||||
@objc(sharedLoggingHandler)
|
@objc(sharedLoggingHandler)
|
||||||
public static func shared() -> Self? {
|
public static func shared() -> Self? {
|
||||||
return MVMCoreActionUtility.initializerClassCheck(MVMCoreObject.sharedInstance()?.loggingDelegate as? NSObject, classToVerify: self) as? Self
|
return MVMCoreActionUtility.initializerClassCheck(MVMCoreObject.sharedInstance()?.loggingDelegate as? NSObject, classToVerify: self) as? Self
|
||||||
@ -29,8 +48,15 @@ import Foundation
|
|||||||
// MARK: - logging delegate
|
// MARK: - logging delegate
|
||||||
@objc open func handleDebugMessage(_ message: String?) {
|
@objc open func handleDebugMessage(_ message: String?) {
|
||||||
#if LOGGING
|
#if LOGGING
|
||||||
guard let message = message else { return }
|
guard let message = message else { return }
|
||||||
self.print(with: message)
|
logger.debug("\(message, privacy: .public)") // Assume that becaues this is a LOGGING build we want these messages to be unmasked.
|
||||||
|
// TODO: How do we split the messaging by Library and Subsystem?
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
open func handleDebugMessage(_ message: String, category: String?) {
|
||||||
|
#if LOGGING
|
||||||
|
getLogger(category: category).debug("\(message, privacy: .public)") // Assume that becaues this is a LOGGING build we want these messages to be unmasked.
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user