OhMyLog is a simple logging package for Swift. It supports the following features:
- Six logging levels: TRACE π€, DEBUG π’, INFO βͺοΈ, WARN π‘, ERROR π΄, FATAL π¨
- Display log context including filename and line number
- Show time
- Output string or any object directly similar to
print() - Toogle display of level icons and context information
You package file would be like:
let package = Package(
name: "YourPackageName",
dependencies: [
.package(url: "https://github.com/forkercat/OhMyLog.git", .branch("main")),
],
targets: [
// For Swift 5.5, use .executableTarget
.target(
name: "YourPackageName",
dependencies: [
.product(name: "OhMyLog", package: "OhMyLog")
]),
]
)import OhMyLog
var logger = Logger(name: "Example-1", level: .info)
logger.logLevel = .trace
logger.showLevelIcon = true
let list = ["Oh", "My", "Log"]
logger.trace("Hello, World! \(list)")
logger.debug("Hello, World! \(list)")
logger.info("Hello, World! \(list)")
logger.warn("Hello, World! \(list)")
logger.error("Hello, World! \(list)")
logger.fatal("Hello, World! \(list)")
// Output
π€ [06:52:31.672] TRACE Example-1: Hello, World! ["Oh", "My", "Log"]
π’ [06:52:31.672] DEBUG Example-1: Hello, World! ["Oh", "My", "Log"]
βͺοΈ [06:52:31.673] INFO Example-1: Hello, World! ["Oh", "My", "Log"]
π‘ [06:52:31.673] WARN Example-1: Hello, World! ["Oh", "My", "Log"]
π΄ [06:52:31.673] ERROR Example-1: Hello, World! ["Oh", "My", "Log"]
π¨ [06:52:31.673] FATAL Example-1: Hello, World! ["Oh", "My", "Log"]import OhMyLog
Log.registerLogger(name: "Example-2", level: .info)
Log.setLevel(level: .info)
Log.info("Hello, World! \(list)")
Log.logLevel = .trace
Log.showLevelIcon(enabled: false)
let list = ["Oh", "My", "Log"]
Log.info("\(list)")
Log.warn(list)
// Output
[INFO] [06:52:31.673] Example-2 main.swift:26 - Hello, World! ["Oh", "My", "Log"]
[WARN] [06:52:31.674] Example-2 main.swift:26 - Hello, World! ["Oh", "My", "Log"]Create a swift source file in your project with two lines.
import OhMyLog
typealias Log = OhMyLog.LogNow you are able to log without import OhMyLog.
Log.registerLogger(name: "Example-3", level: .info)
Log.setLevel(level: .info)
let six = 666
Log.trace(030)
Log.info(six)
// Output
π€ [06:52:31.673] TRACE Example-3: 30
βͺοΈ [06:52:31.673] INFO Example-3: 666