CommandLineToolkit
47 строк · 1.2 Кб
1/*
2* Copyright (c) Avito Tech LLC
3*/
4
5import Foundation
6
7public struct LogEntry: Equatable, Codable {
8public let file: String
9public let line: UInt
10public private(set) var coordinates: [LogEntryCoordinate]
11public let message: String
12public let timestamp: Date
13public let verbosity: Verbosity
14
15public init(
16file: String,
17line: UInt,
18coordinates: [LogEntryCoordinate],
19message: String,
20timestamp: Date,
21verbosity: Verbosity
22) {
23self.file = file
24self.line = line
25self.coordinates = coordinates
26self.message = message
27self.timestamp = timestamp
28self.verbosity = verbosity
29}
30
31public func with(appendedCoordinate: LogEntryCoordinate) -> Self {
32var newCoordinates = coordinates
33newCoordinates.append(appendedCoordinate)
34
35return with(coordinates: newCoordinates)
36}
37
38public func with(coordinates: [LogEntryCoordinate]) -> Self {
39var result = self
40result.coordinates = coordinates
41return result
42}
43
44public func coordinate(name: String) -> LogEntryCoordinate? {
45coordinates.first { $0.name == name }
46}
47}
48