Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Kitura/HeliumLogger
A lightweight logging framework for Swift
https://github.com/Kitura/HeliumLogger
log logger logging swift
Last synced: about 1 month ago
JSON representation
A lightweight logging framework for Swift
- Host: GitHub
- URL: https://github.com/Kitura/HeliumLogger
- Owner: Kitura
- License: apache-2.0
- Created: 2016-02-04T22:52:38.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2021-10-01T16:54:10.000Z (about 3 years ago)
- Last Synced: 2024-05-23T02:37:24.348Z (7 months ago)
- Topics: log, logger, logging, swift
- Language: Swift
- Homepage:
- Size: 1.04 MB
- Stars: 175
- Watchers: 29
- Forks: 37
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
Awesome Lists containing this project
- fucking-awesome-swift - HeliumLogger - IBM's lightweight logging framework. (Libs / Logging)
- awesome-swift - HeliumLogger - A lightweight logging framework for Swift ` 📝 7 months ago ` (Logging [🔝](#readme))
- awesome-swift - HeliumLogger - IBM's lightweight logging framework. (Libs / Logging)
README
# HeliumLogger
Provides a lightweight logging implementation for Swift which logs to standard output.
## Features
- Logs output to stdout by default. You can change the output stream, see example usage for [`HeliumStreamLogger.use(_:outputStream:)`](http://kitura.github.io/HeliumLogger/Classes/HeliumStreamLogger.html#use).
- Different logging levels such as Warning, Verbose, and Error
- Enable/disable color output to terminal
- Support for the [Kitura `LoggerAPI`](https://github.com/Kitura/LoggerAPI) and [Swift-log `Logging`](https://github.com/apple/swift-log) logging APIs.## Usage
#### Add dependencies
Add the `HeliumLogger` package to the dependencies within your application’s `Package.swift` file. Substitute `"x.x.x"` with the latest `HeliumLogger` [release](https://github.com/Kitura/HeliumLogger/releases).
```swift
.package(url: "https://github.com/Kitura/HeliumLogger.git", from: "x.x.x")
```Add `HeliumLogger` to your target's dependencies:
```swift
.target(name: "example", dependencies: ["HeliumLogger"]),
```
#### Import packagesTo use with LoggerAPI:
```swift
import HeliumLogger
import LoggerAPI
```To use with swift-log:
```swift
import HeliumLogger
import Logging
```#### Initialize HeliumLogger
To use HeliumLogger as a logging backend for LoggerAPI:
```swift
let logger = HeliumLogger()
Log.logger = logger
```or, if you don't need to customize `HeliumLogger`:
```swift
HeliumLogger.use()
```To use HeliumLogger as a logging backend for swift-log:
```swift
let logger = HeliumLogger()
LoggingSystem.bootstrap(logger.makeLogHandler)
```Or, as a convenience:
```swift
HeliumLogger.bootstrapSwiftLog()
```#### Logging levels
You can specify the level of output on initialization. You will see output of that level, and all levels below that.
The order is:
1. entry (entering a function)
2. exit (exiting a function)
3. debug
4. verbose (default)
5. info
6. warning
7. errorFor example, this logger will show messages of type `verbose`, `info`, `warning`, and `error`:
```swift
let logger = HeliumLogger(.verbose)
Log.logger = logger
```In this example, the logger will only show messages of type `warning` and `error`:
```swift
HeliumLogger.use(.warning)
```Note that when HeliumLogger is used in conjunction with swift-log, the logging level is determined by the `Logger`, and HeliumLogger's own logging level is unused.
#### Adjust logging levels at runtime (LoggerAPI)
Calling `HeliumLogger.use(LoggerMessageType)` will set the `LoggerAPI` to use this new HeliumLogger instance. If in a route you detect an error with your application, you could use this to dynamically increase the log level.
This new instance will not have any customization which you applied to other instances (see list item 7).
#### Logging messages (LoggerAPI)
How to use HeliumLogger to log messages in your application with LoggerAPI:
```swift
Log.verbose("This is a verbose log message.")Log.info("This is an informational log message.")
Log.warning("This is a warning.")
Log.error("This is an error.")
Log.debug("This is a debug message.")
```#### Further customization
```swift
/// Whether, if true, or not the logger output should be colorized.
public var colored: Bool = false/// If true, use the detailed format when a user logging format wasn't specified.
public var details: Bool = true/// If true, use the full file path, not just the filename.
public var fullFilePath: Bool = false/// If not nil, specifies the user specified logging format.
/// For example: "[(%date)] [(%type)] [(%file):(%line) (%func)] (%msg)"
public var format: String?/// If not nil, specifies the format used when adding the date and the time to the logged messages.
public var dateFormat: String?/// If not nil, specifies the timezone used in the date time format.
public var timeZone: TimeZone?
```## API documentation
For more information visit our [API reference](http://kitura.github.io/HeliumLogger/).
## Community
We love to talk server-side Swift, and Kitura. Join our [Slack](http://swift-at-ibm-slack.mybluemix.net/) to meet the team!
## License
This library is licensed under Apache 2.0. Full license text is available in [LICENSE](https://github.com/Kitura/HeliumLogger/blob/master/LICENSE.txt).