A logger protocol that provides a common logging interface for different kinds of loggers. In addition, a class with a set of static functions for logging within your code is provided.
Kitura uses this API throughout its implementation when logging.
- Swift Open Source
swift-5.1-RELEASE
toolchain (Minimum REQUIRED for latest release) - Swift Open Source
swift-5.4-RELEASE
toolchain (Recommended) - Swift toolchain included in Xcode Version 11.0 or higher.
Add the LoggerAPI
package to the dependencies within your application’s Package.swift
file. Substitute "x.x.x"
with the latest LoggerAPI
release:
.package(url: "https://github.com/Kitura/LoggerAPI.git", from: "x.x.x")
Add LoggerAPI
to your target's dependencies:
.target(name: "example", dependencies: ["LoggerAPI"]),
import LoggerAPI
Add log messages to your application:
Log.warning("This is a warning.")
Log.error("This is an error.")
You need to define a logger
in order to output these messages. You may wish to write your own Logger
implementation, or you can use HeliumLogger
that writes to standard output:
import LoggerAPI
import HeliumLogger
let myLogger = HeliumLogger(.info)
Log.logger = myLogger
You can find out more about HeliumLogger here.
You can direct your log messages to be logged via swift-log by setting the swiftLogger
property:
import LoggerAPI
import Logging
let myLogger = Logging.Logger(label: "myLogger")
myLogger.logLevel = .notice
Log.swiftLogger = myLogger
If both logger
and swiftLogger
are set, then log messages will be sent to both logging backends. The log level configured for a LoggerAPI Logger and a swift-log Logger are independent, so may be used to log at different levels.
Note that because the hierarchy of log levels defined by LoggerAPI and swift-log is slightly different, a mapping is defined between the levels. See the documentation for Log.isLogging()
for details.
For more information visit our API reference.
We love to talk server-side Swift, and Kitura. Join our Slack to meet the team!
This library is licensed under Apache 2.0. Full license text is available in LICENSE.