Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/SwiftyBeaver/SwiftyBeaver
Convenient & secure logging during development & release in Swift 4 & 5
https://github.com/SwiftyBeaver/SwiftyBeaver
apple-tv ios logging macos server-side-swift swift swift-framework swift4 swift5 swiftybeaver-platform vapor
Last synced: 3 days ago
JSON representation
Convenient & secure logging during development & release in Swift 4 & 5
- Host: GitHub
- URL: https://github.com/SwiftyBeaver/SwiftyBeaver
- Owner: SwiftyBeaver
- License: mit
- Created: 2015-11-28T14:08:37.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2024-11-26T10:13:07.000Z (16 days ago)
- Last Synced: 2024-12-05T21:00:20.667Z (7 days ago)
- Topics: apple-tv, ios, logging, macos, server-side-swift, swift, swift-framework, swift4, swift5, swiftybeaver-platform, vapor
- Language: Swift
- Homepage: https://swiftybeaver.com
- Size: 2.37 MB
- Stars: 5,945
- Watchers: 72
- Forks: 480
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ios - SwiftyBeaver - Convenient logging during development and release. (Logging / Other Hardware)
- open-source-mac-os-apps - SwiftyBeaver - Convenient logging during development & release in Swift. ![swift_icon] (Applications / Other)
- awesome-swift - SwiftyBeaver - Multi-platform logging during development & release. (Libs / Logging)
- TheList - SwiftyBeaver - convenient logging during development & release to console, file & cloud (Server Side Utilities / Logging)
- awesome-swift - SwiftyBeaver - Multi-platform logging during development & release. (Libs / Logging)
- awesome-macos-libraries - SwiftyBeaver - Convenient & secure logging during development & release. Language: Swift. (Logging)
- awesome-ios-star - SwiftyBeaver - Convenient logging during development and release. (Logging / Other Hardware)
- awesome-neuron - SwiftyBeaver
- fucking-awesome-swift - SwiftyBeaver - Multi-platform logging during development & release. (Libs / Logging)
- awesome-swift-cn - SwiftBeaver - Colorful, lightweight & fast logging in Swift 2. (Libs / Logging)
- awesome-swift-macos-apps - SwiftyBeaver - Convenient logging during development & release in Swift. (Other / Text)
- awesome-swift-macos-apps - SwiftyBeaver - Convenient logging during development & release in Swift. (Other / Text)
- open-source-mac-os-apps - SwiftyBeaver - Convenient logging during development & release in Swift. ![swift_icon] (Applications / Other)
- Awesome-Swift-Packages - SwiftyBeaver - Convenient logging during development & release in Swift 2, 3 & 4 . (Logger)
- awesome-swift - SwiftyBeaver - Convenient & secure logging during development & release in Swift 3, 4 & 5 ` π a month ago ` (Logging [π](#readme))
README
Colorful, flexible, lightweight logging for Swift 3, Swift 4 & Swift 5.
Great for development & release with support for Console, file & cloud destinations for server-side Swift.---
### During Development: Colored Logging to Xcode Console via OSLog API or Print
#### In Xcode 15
```Swift// use Apple's fancy OSLog API:
let console = ConsoleDestination()
console.logPrintWay = .logger(subsystem: "Main", category: "UI")// or use good ol' "print" (which is the default):
let console = ConsoleDestination()
console.logPrintWay = .print
```
#### In Xcode 8
[Learn more](http://docs.swiftybeaver.com/article/9-log-to-xcode-console) about colored logging to Xcode 8 Console with Swift 3, 4 & 5. For Swift 2.3 [use this Gist](https://gist.github.com/skreutzberger/7c396573796473ed1be2c6d15cafed34). **No need to hack Xcode 8 anymore** to get color. You can even customize the log level word (ATTENTION instead of ERROR maybe?), the general amount of displayed data and if you want to use the πs or replace them with something else π
### During Development: Colored Logging to File
[Learn more](http://docs.swiftybeaver.com/article/10-log-to-file) about logging to file which is great for Terminal.app fans or to store logs on disk.
### Google Cloud & More
You can fully customize your log format, turn it into JSON, or create your own destinations. For example, our [Google Cloud Destination](https://github.com/SwiftyBeaver/SwiftyBeaver/blob/master/Sources/GoogleCloudDestination.swift) is just another customized logging format that adds the powerful functionality of automatic server-side Swift logging when hosted on Google Cloud Platform.
---
## Installation
- For **Swift 4 & 5** install the latest SwiftyBeaver version
- For **Swift 3** install SwiftyBeaver 1.8.4
- For **Swift 2** install SwiftyBeaver 0.7.0
### Carthage
You can use [Carthage](https://github.com/Carthage/Carthage) to install SwiftyBeaver by adding that to your Cartfile:
Swift 4 & 5:
```Swift
github "SwiftyBeaver/SwiftyBeaver"
```Swift 3:
```Swift
github "SwiftyBeaver/SwiftyBeaver" ~> 1.8.4
```Swift 2:
```Swift
github "SwiftyBeaver/SwiftyBeaver" ~> 0.7
```
### Swift Package Manager
For [Swift Package Manager](https://swift.org/package-manager/) add the following package to your Package.swift file. Just Swift 4 & 5 are supported:
```Swift
.package(url: "https://github.com/SwiftyBeaver/SwiftyBeaver.git", .upToNextMajor(from: "2.0.0")),
```
### CocoaPods
To use [CocoaPods](https://cocoapods.org) just add this to your Podfile:
Swift 4 & 5:
```Swift
pod 'SwiftyBeaver'
```Swift 3:
```Ruby
target 'MyProject' do
use_frameworks!# Pods for MyProject
pod 'SwiftyBeaver', '~> 1.8.4'
end
```Swift 2:
```Ruby
target 'MyProject' do
use_frameworks!# Pods for MyProject
pod 'SwiftyBeaver', '~> 0.7'
endpost_install do |installer|
installer.pods_project.build_configurations.each do |config|
# Configure Pod targets for Xcode 8 with Swift 2.3
config.build_settings['SWIFT_VERSION'] = '2.3'
end
end
```
## Usage
Add that near the top of your `AppDelegate.swift` to be able to use SwiftyBeaver in your whole project.
```Swift
import SwiftyBeaver
let log = SwiftyBeaver.self```
At the beginning of your `AppDelegate:didFinishLaunchingWithOptions()` add the SwiftyBeaver log destinations (console, file, etc.), optionally adjust the [log format](http://docs.swiftybeaver.com/article/20-custom-format) and then you can already do the following log level calls globally:
```Swift
// add log destinations. at least one is needed!
let console = ConsoleDestination() // log to Xcode Console
let file = FileDestination() // log to default swiftybeaver.log file// use custom format and set console output to short time, log level & message
console.format = "$DHH:mm:ss$d $L $M"
// or use this for JSON output: console.format = "$J"// In Xcode 15, specifying the logging method as .logger to display color, subsystem, and category information in the console.(Relies on the OSLog API)
console.logPrintWay = .logger(subsystem: "Main", category: "UI")
// If you prefer not to use the OSLog API, you can use print instead.
// console.logPrintWay = .print// add the destinations to SwiftyBeaver
log.addDestination(console)
log.addDestination(file)// Now letβs log!
log.verbose("not so important") // prio 1, VERBOSE in silver
log.debug("something to debug") // prio 2, DEBUG in green
log.info("a nice information") // prio 3, INFO in blue
log.warning("oh no, that wonβt be good") // prio 4, WARNING in yellow
log.error("ouch, an error did occur!") // prio 5, ERROR in red// log anything!
log.verbose(123)
log.info(-123.45678)
log.warning(Date())
log.error(["I", "like", "logs!"])
log.error(["name": "Mr Beaver", "address": "7 Beaver Lodge"])// optionally add context to a log message
console.format = "$L: $M $X"
log.debug("age", context: 123) // "DEBUG: age 123"
log.info("my data", context: [1, "a", 2]) // "INFO: my data [1, \"a\", 2]"```
Alternatively, if you are using SwiftUI, consider using the following setup:
```swift
import SwiftyBeaver
let logger = SwiftyBeaver.self@main
struct yourApp: App {init() {
let console = ConsoleDestination()
logger.addDestination(console)
// etc...
}var body: some Scene {
WindowGroup {
}
}
}
```
## Server-side Swift
We β€οΈ server-side Swift 4 & 5 and SwiftyBeaver support it **out-of-the-box**! Try for yourself and run SwiftyBeaver inside a Ubuntu Docker container. Just install Docker and then go to your project folder on macOS or Ubuntu and type:
```shell
# create docker image, build SwiftyBeaver and run unit tests
docker run --rm -it -v $PWD:/app swiftybeaver /bin/bash -c "cd /app ; swift build ; swift test"# optionally log into container to run Swift CLI and do more stuff
docker run --rm -it --privileged=true -v $PWD:/app swiftybeaver
```Best: for the popular server-side Swift web framework [Vapor](https://github.com/vapor/vapor) you can use **[our Vapor logging provider](https://github.com/SwiftyBeaver/SwiftyBeaver-Vapor)** which makes server logging awesome again π
## Documentation
**Getting Started:**
- [Features](http://docs.swiftybeaver.com/article/7-introduction)
- [Installation](http://docs.swiftybeaver.com/article/5-installation)
- [Basic Setup](http://docs.swiftybeaver.com/article/6-basic-setup)**Logging Destinations:**
- [Colored Logging to Xcode Console](http://docs.swiftybeaver.com/article/9-log-to-xcode-console)
- [Colored Logging to File](http://docs.swiftybeaver.com/article/10-log-to-file)**Advanced Topics:**
- [Custom Format & Context](http://docs.swiftybeaver.com/article/20-custom-format)
- [Filters](http://docs.swiftybeaver.com/article/21-filters)
## License
SwiftyBeaver Framework is released under the [MIT License](https://github.com/SwiftyBeaver/SwiftyBeaver/blob/master/LICENSE).