Skip to content

Commit e18c312

Browse files
committed
Merge LogReceiver with Logger and add LogMetadata for metadata support
1 parent 8392578 commit e18c312

20 files changed

+278
-236
lines changed

Cosmic.xcodeproj/project.pbxproj

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@
3535
04A0695B1EFB215500DEEE7E /* cosmic.h in Headers */ = {isa = PBXBuildFile; fileRef = 04A4A9191EFB1FBA00EBD44E /* cosmic.h */; settings = {ATTRIBUTES = (Public, ); }; };
3636
04A4A93A1EFB1FD200EBD44E /* LogCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A4A9131EFB1FBA00EBD44E /* LogCache.swift */; };
3737
04A4A93B1EFB1FD200EBD44E /* LogFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A4A9141EFB1FBA00EBD44E /* LogFormatter.swift */; };
38-
04A4A93C1EFB1FD200EBD44E /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A4A9151EFB1FBA00EBD44E /* Logger.swift */; };
38+
04A4A93C1EFB1FD200EBD44E /* LogLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A4A9151EFB1FBA00EBD44E /* LogLevel.swift */; };
3939
04A4A93D1EFB1FD200EBD44E /* LogOutputStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A4A9161EFB1FBA00EBD44E /* LogOutputStream.swift */; };
40-
04A4A93E1EFB1FD200EBD44E /* LogReceiver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A4A9171EFB1FBA00EBD44E /* LogReceiver.swift */; };
40+
04A4A93E1EFB1FD200EBD44E /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A4A9171EFB1FBA00EBD44E /* Logger.swift */; };
4141
04A4A93F1EFB1FD200EBD44E /* LogReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A4A9181EFB1FBA00EBD44E /* LogReporter.swift */; };
4242
04A4A9401EFB1FD200EBD44E /* BlockFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A4A91B1EFB1FBA00EBD44E /* BlockFormatter.swift */; };
4343
04A4A9421EFB1FD200EBD44E /* JSONFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A4A91D1EFB1FBA00EBD44E /* JSONFormatter.swift */; };
@@ -47,6 +47,7 @@
4747
04A4A9461EFB1FD200EBD44E /* PrintLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A4A9231EFB1FBA00EBD44E /* PrintLogger.swift */; };
4848
04A4A9471EFB1FD200EBD44E /* Commons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A4A9251EFB1FBA00EBD44E /* Commons.swift */; };
4949
04A4A9481EFB1FD200EBD44E /* DataUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A4A9261EFB1FBA00EBD44E /* DataUtility.swift */; };
50+
04F559D81F2281EF0048F2E0 /* LogMetadataTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F559D71F2281EF0048F2E0 /* LogMetadataTests.swift */; };
5051
04FCF0FF1F115EE500505A5F /* OperatorsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04FCF0FE1F115EE500505A5F /* OperatorsTests.swift */; };
5152
21BE76192CF7D72AD787B219 /* Pods_Cosmic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94200653A44BD6612B15CC45 /* Pods_Cosmic.framework */; };
5253
/* End PBXBuildFile section */
@@ -77,12 +78,12 @@
7778
048F15141F16C57E009ED8F1 /* LogItLogger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LogItLogger.swift; sourceTree = "<group>"; };
7879
048F15151F16C57E009ED8F1 /* LogzLogger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LogzLogger.swift; sourceTree = "<group>"; };
7980
048F15161F16C57E009ED8F1 /* PapertrailLogger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PapertrailLogger.swift; sourceTree = "<group>"; };
80-
048F15171F16C57E009ED8F1 /* SocketLogger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketLogger.swift; sourceTree = "<group>"; };
81+
048F15171F16C57E009ED8F1 /* SocketLogger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = SocketLogger.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
8182
048F151D1F1973EA009ED8F1 /* LogFilter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LogFilter.swift; sourceTree = "<group>"; };
8283
048F151F1F1A5D95009ED8F1 /* SocketLoggerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketLoggerTests.swift; sourceTree = "<group>"; };
8384
048F15201F1A5D95009ED8F1 /* LogItLoggerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LogItLoggerTests.swift; sourceTree = "<group>"; };
8485
048F15231F1A64AA009ED8F1 /* LogFilterTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LogFilterTests.swift; sourceTree = "<group>"; };
85-
049F00DE1EFED30C00BD9E41 /* CompositeLoggerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CompositeLoggerTests.swift; sourceTree = "<group>"; };
86+
049F00DE1EFED30C00BD9E41 /* CompositeLoggerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = CompositeLoggerTests.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
8687
049F00DF1EFED30C00BD9E41 /* FormatterTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormatterTests.swift; sourceTree = "<group>"; };
8788
049F00E01EFED30C00BD9E41 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
8889
049F00E21EFED30C00BD9E41 /* LogReporterTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LogReporterTests.swift; sourceTree = "<group>"; };
@@ -91,20 +92,21 @@
9192
049F00F11EFED83A00BD9E41 /* HTTPLoggerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPLoggerTests.swift; sourceTree = "<group>"; };
9293
04A4A9131EFB1FBA00EBD44E /* LogCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogCache.swift; sourceTree = "<group>"; };
9394
04A4A9141EFB1FBA00EBD44E /* LogFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogFormatter.swift; sourceTree = "<group>"; };
94-
04A4A9151EFB1FBA00EBD44E /* Logger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = "<group>"; };
95+
04A4A9151EFB1FBA00EBD44E /* LogLevel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogLevel.swift; sourceTree = "<group>"; };
9596
04A4A9161EFB1FBA00EBD44E /* LogOutputStream.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogOutputStream.swift; sourceTree = "<group>"; };
96-
04A4A9171EFB1FBA00EBD44E /* LogReceiver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogReceiver.swift; sourceTree = "<group>"; };
97+
04A4A9171EFB1FBA00EBD44E /* Logger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = Logger.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
9798
04A4A9181EFB1FBA00EBD44E /* LogReporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogReporter.swift; sourceTree = "<group>"; };
9899
04A4A9191EFB1FBA00EBD44E /* cosmic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cosmic.h; sourceTree = "<group>"; };
99100
04A4A91B1EFB1FBA00EBD44E /* BlockFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockFormatter.swift; sourceTree = "<group>"; };
100101
04A4A91D1EFB1FBA00EBD44E /* JSONFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSONFormatter.swift; sourceTree = "<group>"; };
101102
04A4A91E1EFB1FBA00EBD44E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
102-
04A4A9201EFB1FBA00EBD44E /* CompositeLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompositeLogger.swift; sourceTree = "<group>"; };
103-
04A4A9211EFB1FBA00EBD44E /* HTTPLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPLogger.swift; sourceTree = "<group>"; };
104-
04A4A9221EFB1FBA00EBD44E /* MemoryLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemoryLogger.swift; sourceTree = "<group>"; };
105-
04A4A9231EFB1FBA00EBD44E /* PrintLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrintLogger.swift; sourceTree = "<group>"; };
103+
04A4A9201EFB1FBA00EBD44E /* CompositeLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = CompositeLogger.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
104+
04A4A9211EFB1FBA00EBD44E /* HTTPLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = HTTPLogger.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
105+
04A4A9221EFB1FBA00EBD44E /* MemoryLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = MemoryLogger.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
106+
04A4A9231EFB1FBA00EBD44E /* PrintLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = PrintLogger.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
106107
04A4A9251EFB1FBA00EBD44E /* Commons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Commons.swift; sourceTree = "<group>"; };
107108
04A4A9261EFB1FBA00EBD44E /* DataUtility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataUtility.swift; sourceTree = "<group>"; };
109+
04F559D71F2281EF0048F2E0 /* LogMetadataTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LogMetadataTests.swift; sourceTree = "<group>"; };
108110
04FCF0FE1F115EE500505A5F /* OperatorsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OperatorsTests.swift; sourceTree = "<group>"; };
109111
60D283CB210C0089A0704073 /* Pods-CosmicTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CosmicTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-CosmicTests/Pods-CosmicTests.debug.xcconfig"; sourceTree = "<group>"; };
110112
67D62702415ADE471E9854E0 /* Pods-Cosmic.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Cosmic.release.xcconfig"; path = "Pods/Target Support Files/Pods-Cosmic/Pods-Cosmic.release.xcconfig"; sourceTree = "<group>"; };
@@ -228,6 +230,7 @@
228230
048F151F1F1A5D95009ED8F1 /* SocketLoggerTests.swift */,
229231
048F15201F1A5D95009ED8F1 /* LogItLoggerTests.swift */,
230232
048F15231F1A64AA009ED8F1 /* LogFilterTests.swift */,
233+
04F559D71F2281EF0048F2E0 /* LogMetadataTests.swift */,
231234
);
232235
path = CosmicTests;
233236
sourceTree = "<group>";
@@ -259,9 +262,9 @@
259262
children = (
260263
04A4A9131EFB1FBA00EBD44E /* LogCache.swift */,
261264
04A4A9141EFB1FBA00EBD44E /* LogFormatter.swift */,
262-
04A4A9151EFB1FBA00EBD44E /* Logger.swift */,
265+
04A4A9151EFB1FBA00EBD44E /* LogLevel.swift */,
263266
04A4A9161EFB1FBA00EBD44E /* LogOutputStream.swift */,
264-
04A4A9171EFB1FBA00EBD44E /* LogReceiver.swift */,
267+
04A4A9171EFB1FBA00EBD44E /* Logger.swift */,
265268
04A4A9181EFB1FBA00EBD44E /* LogReporter.swift */,
266269
048F151D1F1973EA009ED8F1 /* LogFilter.swift */,
267270
);
@@ -506,9 +509,9 @@
506509
04A4A93F1EFB1FD200EBD44E /* LogReporter.swift in Sources */,
507510
04A4A9451EFB1FD200EBD44E /* MemoryLogger.swift in Sources */,
508511
04A4A9421EFB1FD200EBD44E /* JSONFormatter.swift in Sources */,
509-
04A4A93E1EFB1FD200EBD44E /* LogReceiver.swift in Sources */,
512+
04A4A93E1EFB1FD200EBD44E /* Logger.swift in Sources */,
510513
048F151A1F16C57E009ED8F1 /* LogzLogger.swift in Sources */,
511-
04A4A93C1EFB1FD200EBD44E /* Logger.swift in Sources */,
514+
04A4A93C1EFB1FD200EBD44E /* LogLevel.swift in Sources */,
512515
04A4A9441EFB1FD200EBD44E /* HTTPLogger.swift in Sources */,
513516
048F15181F16C57E009ED8F1 /* LogglyLogger.swift in Sources */,
514517
04A4A93B1EFB1FD200EBD44E /* LogFormatter.swift in Sources */,
@@ -539,6 +542,7 @@
539542
049F00E81EFED30C00BD9E41 /* CompositeLoggerTests.swift in Sources */,
540543
048F15251F1A6C4E009ED8F1 /* SocketLoggerTests.swift in Sources */,
541544
0441B8CE1F116CC20088A851 /* LoggerTests.swift in Sources */,
545+
04F559D81F2281EF0048F2E0 /* LogMetadataTests.swift in Sources */,
542546
049F00F21EFED83A00BD9E41 /* HTTPLoggerTests.swift in Sources */,
543547
0411F6EE1EFF256200BE872F /* MockURLSession.swift in Sources */,
544548
049F00EF1EFED30C00BD9E41 /* ServiceLoggerTests.swift in Sources */,

Sources/Cosmic/Base/LogCache.swift

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,13 @@ import Foundation
1010

1111
struct LogCacheEntry {
1212

13-
let created: Date = Date()
14-
1513
let logLevel: LogLevel
1614

1715
let message: String
1816

19-
init(logLevel: LogLevel, message: String) {
20-
self.logLevel = logLevel
21-
self.message = message
22-
}
17+
let metadata: LogMetadata
18+
19+
let created: Date = Date()
2320

2421
}
2522

@@ -30,8 +27,8 @@ class LogCache {
3027

3128
init() { }
3229

33-
func addEntry(with message: String, logLevel: LogLevel) {
34-
let entry = LogCacheEntry(logLevel: logLevel, message: message)
30+
func addEntry(with message: String, logLevel: LogLevel, metadata: LogMetadata) {
31+
let entry = LogCacheEntry(logLevel: logLevel, message: message, metadata: metadata)
3532
entries.append(entry)
3633
}
3734

Sources/Cosmic/Base/LogFilter.swift

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@
88

99
import Foundation
1010

11-
/// This cache contains all filters to be applied to loggers
12-
internal var FilterCache: [LogFilter] = []
13-
14-
1511
/// LogFilter
1612
protocol LogFilter {
1713

@@ -22,12 +18,18 @@ protocol LogFilter {
2218
/// A class that holds global log filters
2319
class LogFilters {
2420

25-
public static func addFilter(filter: LogFilter) {
26-
FilterCache.append(filter)
21+
public static let global = LogFilters()
22+
23+
var filters: [LogFilter] = []
24+
25+
private init() { }
26+
27+
public func addFilter(filter: LogFilter) {
28+
filters.append(filter)
2729
}
2830

29-
public static func clearFilters() {
30-
FilterCache.removeAll()
31+
public func clearFilters() {
32+
filters.removeAll()
3133
}
3234

3335
}

Sources/Cosmic/Base/LogLevel.swift

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import Foundation
2+
3+
4+
/// Describes a logging level used for filtering
5+
/// output based on severity
6+
public enum LogLevel: UInt {
7+
8+
9+
/// Debug logs capture information useful for debugging
10+
/// development builds of the calling library or application
11+
case debug = 0b0001
12+
13+
/// Info logs capture contextual information about the current
14+
/// execution state for monitoring in production builds
15+
case info = 0b0011
16+
17+
/// Warning logs capture potential issues or known weaknesses
18+
/// in the calling library or application
19+
case warn = 0b0111
20+
21+
/// Error logs capture unrecoverable issues in the calling
22+
/// library or application
23+
case error = 0b1111
24+
25+
/// No logs are captured
26+
case none = 0xFFFF
27+
28+
29+
var simpleName: String {
30+
switch self {
31+
case .debug: return "debug"
32+
case .info: return "info"
33+
case .warn: return "warn"
34+
case .error: return "error"
35+
default: return ""
36+
}
37+
}
38+
}

Sources/Cosmic/Base/LogReceiver.swift

Lines changed: 0 additions & 101 deletions
This file was deleted.

0 commit comments

Comments
 (0)