Logger protocol

What's New

Swift 4.x no longer supported


Swift 5.1 is now the minimum supported version.


APIDoc Build Status - Master macOS Linux Apache 2 Slack Status


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 dependencies

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 package

import LoggerAPI

Log messages

Add log messages to your application:

Log.warning("This is a warning.")
Log.error("This is an error.")

Define a logger

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.

Logging messages to swift-log

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.

API documentation

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.


  • Swift Tools 5.0.0
View More Packages from this Author


Last updated: Mon May 15 2023 03:13:50 GMT-0500 (GMT-05:00)