8f8f8b2755
macOS menu bar app providing NHL game situational awareness with league-wide scoreboard, dynamic polling, notifications with team logos, and configurable display options.
45 lines
1.0 KiB
Swift
45 lines
1.0 KiB
Swift
//
|
|
// IceGlassLogger.swift
|
|
// IceGlass
|
|
//
|
|
// Copyright 2026 Rouslan Zenetl. All Rights Reserved.
|
|
//
|
|
|
|
import OSLog
|
|
|
|
struct IceGlassLogger {
|
|
private let logger: Logger
|
|
private let subsystem: String
|
|
private let category: String
|
|
|
|
init(subsystem: String, category: String) {
|
|
self.subsystem = subsystem
|
|
self.category = category
|
|
self.logger = Logger(subsystem: subsystem, category: category)
|
|
}
|
|
|
|
func timestamp() -> String {
|
|
Date.now.formatDateET(format: "yyyy-MM-dd HH:mm:ss")
|
|
}
|
|
|
|
func formattedMessage(_ message: String) -> String {
|
|
"\(timestamp()) [\(subsystem):\(category)] \(message)"
|
|
}
|
|
|
|
func debug(_ message: String) {
|
|
logger.debug("\(formattedMessage(message))")
|
|
}
|
|
|
|
func info(_ message: String) {
|
|
logger.info("\(formattedMessage(message))")
|
|
}
|
|
|
|
func warning(_ message: String) {
|
|
logger.warning("\(formattedMessage(message))")
|
|
}
|
|
|
|
func error(_ message: String) {
|
|
logger.error("\(formattedMessage(message))")
|
|
}
|
|
}
|