Logger
Simple protocol (Logger) to define and use logging. There are a few concreate implementations of the Logger protocol:
ConsoleLogger: Logs directly to the console TextFileLogger: Logs to plain text files. Supports file rollover options
JSONFileLogger: Logs to json array files. Supports file rollover options
GroupLogger: Combines multiple loggers together for simultaneous logging
There are also explicit classes for the ConsoleFileLogger, TextFileLogger and JSONFileLogger that will only log when the log levels exactly match
Usage
Creating new instances of the FileLoggers:
let fileLogger = TextFileLogger(usingFile: "logfile.log", withlogLevel: .info)
fileLogger.log("Error Message", .error)
let jsonLogger = JSONFileLogger(usingFile: "logfile.json", withlogLevel: .info)
jsonLogger.log("Error Message", .error)
Accessing the Console Logger:
//consoleLogger is a global instance of the ConsoleLogger class that is already initialized.
consoleLogger.log("message", .info)
When using in other object of logging:
class Object {
var logger: Logger?
public func doMethod() {
...
logger?.log("Doing doMethod", .info)
}
}
let obj = Object()
obj.logger = consoleLogger
consoleLogger.logLevel = .info
obj.doMethod()
When wanting to log to multiple places at once:
class Object {
var logger: Logger?
public func doMethod() {
...
logger?.log("Doing doMethod", .info)
}
}
let obj = Object()
//Notice that the file logger andthe console logger have differennt log levels...
//This way you can sperate out different levels of logging
let fileLogger = TextFileLogger(usingFile: "logfile.log", withlogLevel: .error)
consoleLogger.logLevel = .info
let groupLogger = GroupLogger(fileLogger, consoleLogger.logLevel)
obj.logger = groupLogger
obj.doMethod()
Dependancies
- IndexedStringFormat - Used to allow users to control log output format when writing to console or text file - IndexedStringFormat
Author
- Tyler Anger - Initial work - TheAngryDarling
License
This project is licensed under Apache License v2.0 - see the LICENSE.md file for details