Skip to content

Kjuly/KYLogger

Repository files navigation

KYLogger

A local system logger for Apple platforms.

This lightweight logging lib is serverless. It includes a debug logger and a file logger which will save logs locally on the device. Users can choose to send a log file when a bug is reported.


macOS iOS watchOS
SPM CocoaPods Carthage

Installation

See the following subsections for details on the different installation methods.

KYLog Usage

KYLog(.debug, "A debug message")
KYLog(.notice, "A notice message")
KYLog(.success, "A success message")
KYLog(.warn, "A warn message")
KYLog(.error, "A error message")
KYLog(.critical, "A critical message")

Outputs:

🟣 DEBUG -[KYLoggerDemoApp.swift init()] L18: A debug message
🔵 NOTICE -[KYLoggerDemoApp.swift init()] L19: A notice message
🟢 SUCCESS -[KYLoggerDemoApp.swift init()] L20: A success message
🟡 WARN -[KYLoggerDemoApp.swift init()] L21: A warn message
🔴 ERROR -[KYLoggerDemoApp.swift init()] L22: A error message
❌ CRITICAL -[KYLoggerDemoApp.swift init()] L23: A critical message

KYFileLogger Usage

You can define a global variable to toggle file logging and wrap the logger with a convenience function. Just like the demo project:

class DemoAppFileLogger {
  public static var isDataSyncLoggingEnabled: Bool = false
}

public func DemoAppSyncFileLog(
  _ type: KYLogType,
  _ message: String,
  function: String = #function,
  file: String = #file,
  line: Int = #line
) {
#if DEBUG
  KYFileLogger.log(type, message, DemoAppFileLogger.isDataSyncLoggingEnabled, function: function, file: file, line: line)
#else
  if DemoAppFileLogger.isDataSyncLoggingEnabled {
    KYFileLogger.log(type, message, function: function, file: file, line: line)
  }
#endif
}

// This message will be saved to disk only if `DemoAppFileLogger.isDataSyncLoggingEnabled = true`.
DemoAppSyncFileLog(.notice, "Some sync messages.")

Note

You can check out the demo project KYLoggerDemo for more details.