Bayer-Group/TimberSwift
A message forwarding framework for sending logs, analytics, performance, network activity, and other messages to the Parent Application
Workflows
- Logging
- Error, Warning, Debug, Info - A console friendly message is passed to the parent application - Errors are ALSO passed to a seperate method and are expected to be logged to an error logging solution such as Crashlytics non-fatal logging
- Analytics
- Set screen name for workflow - Log an event
- User Messaging
- Toast messages
- Performance
- Measuring the time is takes between starting, incrementating, and stopping a trace.
- Networking
- Network Activity
Installation
Carthage
### Package Manager
Instructions
Create a Timber object and begin using any or all of the workflows
timber.performance.startTrace(key: "Some Key", properties: ["Some": "Things for the trace"])
timber.performance.incrementTraceCounter(key: "Some Key")
timber.performance.stopTrace(key: "Some Key")
timber.log.debug("A message", properties: ["More": "Info"])
timber.log.info("A message", properties: ["More": "Info"])
timber.log.warning("A message", properties: ["More": "Info"])
timber.log.error("A message", errorType: .http(statusCode: 500), properties: ["Error": "Info"])
timber.userMessage.toast("Hi There", displayTime: 2.0, type: .success)
timber.analytics.setScreen(title: "The Main Map")
timber.analytics.recordEvent(title: "Downloading Everything", properties: ["Specific": "Info"])
timber.network.startedActivity()
timber.network.endedActivity()The parent application should assign itself as the TimberApplicationDelegate as soon as possble to receive any and all messages from Timber objects.
func setScreen(title: String, source: Source)
func recordEvent(title: String, properties: [String: Any]?, source: Source)
func log(_ logMessage: LogMessage)
func log(_ error: TimberError)
func toast(_ message: String, displayTime: TimeInterval, type: ToastType, source: Source)
func startTrace(key: String, identifier: UUID?, properties: [String: Any]?, source: Source)
func incrementTraceCounter(key: String, identifier: UUID?, named: String, by count: Int, source: Source)
func stopTrace(key: String, identifier: UUID?, source: Source)
func networkActivityStarted(source: Source)
func networkActivityEnded(source: Source)Extending TimberSwift in XCode
Option 1: Run with the current XCode project as is
Option 2: Rebuild it using generate-xcodeproj
- Setup: Package Manager Example:
rm -rf .xcodeproj || rm -rf .build || swift package resolve && swift package generate-xcodeproj && open .xcodeproj - Building: In the Target
TimberSwift, select the tabSigning & Capabilitiesand check the boxAutomatically manage signing - Code Coverage: In the scheme menu, select
Edit Scheme..., select theTestitem on the left, select the tabOptions, and check the boxGather coverage for "all targets" - Mocking: In the target
TimberSwiftTestsselect the tabBuild Phasesand add aRun Script Phasewith the body$PROJECT_DIR/Scripts/parrot.shand move the item to the top of the Buld Phases just belowDependencies. - Linting: In the target
TimberSwiftselect the tabBuild Phasesand add aRun Script Phasewith the body$PROJECT_DIR/Scripts/swiftlint.sh.
Package Metadata
Repository: Bayer-Group/TimberSwift
Stars: 2
Forks: 3
Open issues: 0
Default branch: main
Primary language: swift
License: Other
README: README.md