The OS Log facility (from macOS 10.12 or from iOS 10)
A file
STDOUT (println)
A network destination
A list of callback objects from the Application itself.
8 log levels:
Debug
Info
Notice
Warning
Error
Critical
Alert
Emergency
Each logging target can have its own cut-off level for the information that is logged.
The file target can be configured to store the log info in a predefined number of files of a predefined maximum size. When the maximum number of files is exceeded, the oldest file will automatically be removed.
Included high performance non-evaluation destinations to allow debug logging calls to remain in shipping code
Compiles using SPM (Swift Package Manager)
Filtering is possible
Supports macOS and Linux
Keeps logfiles seperate if multiple instances of the same app are executing in parallel.
This will create a directory SwifterLog with the project contained in it.
Go down in the directory that was created:
$ cd SwifterLog
Then perform a SPM build.
$ swift build
Adding to an Xcode project
In the Xcode project using the navigator panel select the target SwifterLog should be added to.
Then select the General tab and click the + sign of the Frameworks, Libraries, and Embedded Content section.
In the dropdown window select Add Other... and choose Add Package Dependency....
In the new dropdown window type https://github.com/Balancingrock/SwifterLog.git and click Next, Next and Finish.
Now use import SwifterLog in each source file where you need its capabilities.
Optional removal of Ascii, BRUtils, VJson and SwifterSockets dependency
By default SwifterLog also needs Ascii, BRUtils, VJson and SwifterSockets for the networking target. If the networking target is not needed, that code can be excluded by adding an Active Compilation Condition:
In the xcode project, the SwifterLog framework target, select the Build Settings and under Swift Compiler - Custom Flags add SWIFTERLOG_DISABLE_NETWORK_TARGET to the Active Compiler Conditions.
Also remove the Ascii, BRUtils, VJson and SwifterSockets from the Linked Frameworks and Libraries settings under the General tab for the SwifterLog target.
Version History
No new features planned. Updates are made on an ad-hoc basis as needed to support Swiftfire development.
2.2.2 & 2.2.3
Added swift version, platform and a LICENSE file
2.2.1
Rewrote dependency on >= macOS 12
2.2.0
Added capability to run multiple instances of an app in parallel and still keep the logfiles sperate.
2.1.1
Linux compatibility
2.1.0
Updated for changes in SwifterSockets: using Swift.Result instead of BRUtils.Result.
2.0.1
Documentation updates
2.0.0
Udated headers
Added defaultTypeString and now allows empty type parameters.
1.7.1
Updated manifest to tool v5
Added platform to manifest (macOS 10.12)
1.7.0
Migration to Swift 5
1.6.0
Undid the disabling of time info in Stdout target (not needed)
Fixed level-inversion bug that made the newest versions of SwifterLog unworkable
1.5.0
Added disabling of time info to Stdout target
Added disable/enable settings for OSLog target
1.4.0
Made the message parameter implicit
1.3.0
Replace ASL with os_log
1.2.0
Migration to SPM 4
1.1.2
Migration to Swift 4, minor changes.
Updated user manual
1.1.1
Updated dependecies
1.1.0
Split off from 1.0.1, new implementation.
1.0.1
Updated dependecies (VJson & SwifterSockets)
1.0.0
No changes but this readme file since the previous version.
SwifterLog
A framework in Swift to create and manage log entries in up to 5 destinations and on 8 levels.
SwifterLog is part of the Swiftfire webserver project.
The Swiftfire website
The Reference manual
The Installation manual on Swiftfire.nl or github
The User manual on Swiftfire.nl or github
Features
Installation
As an SPM package
To install SwifterLog type the following:
This will create a directory SwifterLog with the project contained in it.
Go down in the directory that was created:
Then perform a SPM build.
Adding to an Xcode project
In the Xcode project using the navigator panel select the target SwifterLog should be added to.
Then select the
General
tab and click the+
sign of theFrameworks, Libraries, and Embedded Content
section.In the dropdown window select
Add Other...
and chooseAdd Package Dependency...
.In the new dropdown window type
https://github.com/Balancingrock/SwifterLog.git
and clickNext
,Next
andFinish
.Now use
import SwifterLog
in each source file where you need its capabilities.Optional removal of Ascii, BRUtils, VJson and SwifterSockets dependency
By default SwifterLog also needs Ascii, BRUtils, VJson and SwifterSockets for the networking target. If the networking target is not needed, that code can be excluded by adding an Active Compilation Condition:
In the xcode project, the SwifterLog framework target, select the
Build Settings
and underSwift Compiler - Custom Flags
addSWIFTERLOG_DISABLE_NETWORK_TARGET
to theActive Compiler Conditions
.Also remove the Ascii, BRUtils, VJson and SwifterSockets from the
Linked Frameworks and Libraries
settings under theGeneral
tab for the SwifterLog target.Version History
No new features planned. Updates are made on an ad-hoc basis as needed to support Swiftfire development.
2.2.2 & 2.2.3
2.2.1
2.2.0
2.1.1
2.1.0
2.0.1
2.0.0
1.7.1
1.7.0
1.6.0
1.5.0
1.4.0
1.3.0
1.2.0
1.1.2
1.1.1
1.1.0
1.0.1
1.0.0