mirror of
https://github.com/yattee/yattee.git
synced 2026-07-21 06:42:01 +00:00
Make Enable Logging the master switch over all verbose logging
The verbose toggles (MPV, remote control) kept working with the master "Enable Logging" toggle off: the settings UI hides them, but their stored values - verboseMPVLogging is even iCloud-synced - were still honored at runtime, producing console output and enabling the periodic MPV stats collection while logging appeared disabled. Enable Logging now takes precedence everywhere: - LoggingService gates its DEBUG-build OSLog console output on the master toggle (it previously ran before the isEnabled guard, so the Xcode console was never silent) - MPVLogging requires loggingEnabled && verboseMPVLogging, which also gates the 10s playback stats task via MPVLogging.verboseEnabled - rcDebug in LocalNetworkService and RemoteControlCoordinator requires the master toggle alongside verboseRemoteControlLogging
This commit is contained in:
@@ -192,18 +192,23 @@ final class LoggingService: Sendable {
|
|||||||
/// OSLog output is synchronous; in-app storage is dispatched to MainActor.
|
/// OSLog output is synchronous; in-app storage is dispatched to MainActor.
|
||||||
nonisolated func log(level: LogLevel, category: LogCategory, message: String, details: String? = nil) {
|
nonisolated func log(level: LogLevel, category: LogCategory, message: String, details: String? = nil) {
|
||||||
// Log to OSLog in DEBUG builds for Xcode console visibility
|
// Log to OSLog in DEBUG builds for Xcode console visibility
|
||||||
// OSLog/Logger is thread-safe, so this can be called from any thread
|
// OSLog/Logger is thread-safe, so this can be called from any thread.
|
||||||
|
// The master "Enable Logging" toggle gates this too - it takes
|
||||||
|
// precedence over everything, so logging off means a silent console.
|
||||||
|
// (Read UserDefaults directly: this runs off the MainActor.)
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
let fullMessage = details.map { "\(message) - \($0)" } ?? message
|
if UserDefaults.standard.bool(forKey: "loggingEnabled") {
|
||||||
switch level {
|
let fullMessage = details.map { "\(message) - \($0)" } ?? message
|
||||||
case .debug:
|
switch level {
|
||||||
osLogger.debug("[\(category.rawValue)] \(fullMessage)")
|
case .debug:
|
||||||
case .info:
|
osLogger.debug("[\(category.rawValue)] \(fullMessage)")
|
||||||
osLogger.info("[\(category.rawValue)] \(fullMessage)")
|
case .info:
|
||||||
case .warning:
|
osLogger.info("[\(category.rawValue)] \(fullMessage)")
|
||||||
osLogger.warning("[\(category.rawValue)] \(fullMessage)")
|
case .warning:
|
||||||
case .error:
|
osLogger.warning("[\(category.rawValue)] \(fullMessage)")
|
||||||
osLogger.error("[\(category.rawValue)] \(fullMessage)")
|
case .error:
|
||||||
|
osLogger.error("[\(category.rawValue)] \(fullMessage)")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -37,8 +37,11 @@ enum MPVLogging {
|
|||||||
if now - _lastCheckTime > cacheDurationNanos {
|
if now - _lastCheckTime > cacheDurationNanos {
|
||||||
_lastCheckTime = now
|
_lastCheckTime = now
|
||||||
// Read from UserDefaults directly for thread safety
|
// Read from UserDefaults directly for thread safety
|
||||||
// (SettingsManager is @MainActor)
|
// (SettingsManager is @MainActor).
|
||||||
_cachedIsEnabled = UserDefaults.standard.bool(forKey: "verboseMPVLogging")
|
// The master "Enable Logging" switch takes precedence: with it off,
|
||||||
|
// verbose MPV logging is off no matter what the verbose flag says.
|
||||||
|
_cachedIsEnabled = UserDefaults.standard.bool(forKey: "loggingEnabled")
|
||||||
|
&& UserDefaults.standard.bool(forKey: "verboseMPVLogging")
|
||||||
}
|
}
|
||||||
|
|
||||||
return _cachedIsEnabled
|
return _cachedIsEnabled
|
||||||
|
|||||||
@@ -92,8 +92,10 @@ final class LocalNetworkService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Log debug-level message. Only logs if verbose remote control logging is enabled.
|
/// Log debug-level message. Only logs if verbose remote control logging is enabled.
|
||||||
|
/// The master "Enable Logging" toggle takes precedence over the verbose flag.
|
||||||
private func rcDebug(_ operation: String, _ message: String) {
|
private func rcDebug(_ operation: String, _ message: String) {
|
||||||
guard UserDefaults.standard.bool(forKey: "verboseRemoteControlLogging") else { return }
|
guard UserDefaults.standard.bool(forKey: "loggingEnabled"),
|
||||||
|
UserDefaults.standard.bool(forKey: "verboseRemoteControlLogging") else { return }
|
||||||
let fullMessage = "[RemoteControl] \(operation) - \(message)"
|
let fullMessage = "[RemoteControl] \(operation) - \(message)"
|
||||||
LoggingService.shared.logRemoteControlDebug(fullMessage)
|
LoggingService.shared.logRemoteControlDebug(fullMessage)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,8 +116,10 @@ final class RemoteControlCoordinator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Log debug-level message. Only logs if verbose remote control logging is enabled.
|
/// Log debug-level message. Only logs if verbose remote control logging is enabled.
|
||||||
|
/// The master "Enable Logging" toggle takes precedence over the verbose flag.
|
||||||
private func rcDebug(_ operation: String, _ message: String) {
|
private func rcDebug(_ operation: String, _ message: String) {
|
||||||
guard UserDefaults.standard.bool(forKey: "verboseRemoteControlLogging") else { return }
|
guard UserDefaults.standard.bool(forKey: "loggingEnabled"),
|
||||||
|
UserDefaults.standard.bool(forKey: "verboseRemoteControlLogging") else { return }
|
||||||
let fullMessage = "[RemoteControl] \(operation) - \(message)"
|
let fullMessage = "[RemoteControl] \(operation) - \(message)"
|
||||||
LoggingService.shared.logRemoteControlDebug(fullMessage)
|
LoggingService.shared.logRemoteControlDebug(fullMessage)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user