34 lines
640 B
Swift
34 lines
640 B
Swift
|
import Foundation
|
||
|
|
||
|
struct LogEntry: Identifiable {
|
||
|
|
||
|
let id: TimeInterval
|
||
|
|
||
|
let date: Date
|
||
|
|
||
|
let level: Log.Level
|
||
|
|
||
|
let message: String
|
||
|
|
||
|
init(date: Date = Date(), level: Log.Level, message: String) {
|
||
|
self.id = date.timeIntervalSince1970
|
||
|
self.date = date
|
||
|
self.level = level
|
||
|
self.message = message
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private let df: DateFormatter = {
|
||
|
let df = DateFormatter()
|
||
|
df.dateStyle = .short
|
||
|
df.timeStyle = .medium
|
||
|
return df
|
||
|
}()
|
||
|
|
||
|
extension LogEntry: CustomStringConvertible {
|
||
|
|
||
|
var description: String {
|
||
|
"[\(df.string(from: date))][\(level.rawValue)] \(message)"
|
||
|
}
|
||
|
}
|