TheAngryDarling / SwiftLogger

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Logger

swift >= 4.0 macOS Linux Apache 2

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

License

This project is licensed under Apache License v2.0 - see the LICENSE.md file for details

About

License:Apache License 2.0


Languages

Language:Swift 100.0%