HeliumLogger
Helium Logger is a lightweight Swift logging framework which supports logging to standard output.
In this guide we are going to show you how to add Helium Logger to a Kitura server, log messages using the logger and set the level of logging that should be displayed.
If you don't have a Kitura server, follow our Create a server guide.
Step 1: Add HeliumLogger to the project
If you created your server using the CLI or the macOS app, your project will have HeliumLogger by default. In this case, we can skip to step 3.
Otherwise, we need to add HeliumLogger to our dependencies.
We then need to import LoggerAPI
and HeliumLogger
inside our project.
Open your main.swift
file:
open Sources/MyKituraApp/main.swift
At the top of the file, add LoggerAPI
and HeliumLogger
to our import statements:
import LoggerAPI
import HeliumLogger
LoggerAPI is a logger protocol that provides a common logging interface for different kinds of loggers. HeliumLogger has LoggerAPI included as a dependency, so we do not need to add this to our
Package.swift
file.
Step 2: Add logging code to the server
To use the default settings for HeliumLogger we just need to call the use()
method in HeliumLogger.
Inside your main.swift
add:
HeliumLogger.use()
We are going to use our new logger to log errors thrown by our server.
Inside the catch block, log the thrown error:
Log.error(error.localizedDescription)
Your main.swift
should look like this:
import Foundation
import Kitura
import LoggerAPI
import HeliumLogger
import Application
HeliumLogger.use()
do {
let app = try App()
try app.run()
} catch let error {
Log.error(error.localizedDescription)
}
Now if you start your server you should see some logging output. This should look something like:
[xxx] [VERBOSE] [Kitura.swift:118 run()] Starting Kitura framework...
[xxx] [VERBOSE] [Kitura.swift:135 start()] Starting an HTTP Server on port 8080...
[xxx] [INFO] [HTTPServer.swift:195 listen(on:)] Listening on port 8080
[xxx] [VERBOSE] [HTTPServer.swift:196 listen(on:)] Options for port 8080: maxPendingConnections: 100, allowPortReuse: false
Step 3: Set logging level
HeliumLogger can be customized to change the level of logging.
This means you can decide how much information you'd like to be logged, based on importance.
If you'd like to customize the level of logging you can simply pass the level to the use()
method.
Inside your main.swift
file, set the logging level:
HeliumLogger.use(.debug)
There are several logging levels:
- entry
- exit
- debug
- verbose (default)
- info
- warning
- error
Verbose is set by default. Setting a particular logging level also includes all levels below that.
For example, if you set a logging level of verbose
:
HeliumLogger.use(.verbose)
You will get logging for; verbose
, info
, warning
and error
.
Similarly if you set a logging level of warning
:
HeliumLogger.use(.warning)
You will get logging for warning
and error
.
Step 4: Add logging to your application
Once you have your Logger configured, you can use it within your application.
Open your Application.swift
file:
open Sources/Application/Application.swift
Ensure LoggerAPI is imported:
import LoggerAPI
Add a log message to the App's init()
function:
Log.info("Hello World")
Restart your server and look through the logs. You should see your message:
[2019-03-13T16:23:08.078Z] [INFO] [Application.swift:22 init()] Hello World
Your log message is printed along with the time it occurred, the log level and the location in your code.
Next steps
Routing: Learn about routing and the two types Kitura supports.