1+ @startuml
2+ package com . iluwatar . logaggregation {
3+ class App {
4+ + App ()
5+ + main(args : String[]) {static}
6+ }
7+ class CentralLogStore {
8+ - LOGGER : Logger {static}
9+ - logs : ConcurrentLinkedQueue<LogEntry>
10+ + CentralLogStore ()
11+ + displayLogs ()
12+ + storeLog(logEntry : LogEntry)
13+ }
14+ class LogAggregator {
15+ - BUFFER_THRESHOLD : int {static}
16+ - LOGGER : Logger {static}
17+ - buffer : ConcurrentLinkedQueue<LogEntry>
18+ - centralLogStore : CentralLogStore
19+ - executorService : ExecutorService
20+ - logCount : AtomicInteger
21+ - minLogLevel : LogLevel
22+ + LogAggregator(centralLogStore : CentralLogStore, minLogLevel : LogLevel)
23+ + collectLog(logEntry : LogEntry)
24+ - flushBuffer ()
25+ - startBufferFlusher ()
26+ + stop ()
27+ }
28+ class LogEntry {
29+ - level : LogLevel
30+ - message : String
31+ - serviceName : String
32+ - timestamp : LocalDateTime
33+ + LogEntry(serviceName : String, level : LogLevel, message : String, timestamp : LocalDateTime)
34+ # canEqual(other : Object) : boolean
35+ + equals(o : Object) : boolean
36+ + getLevel () : LogLevel
37+ + getMessage () : String
38+ + getServiceName () : String
39+ + getTimestamp () : LocalDateTime
40+ + hashCode () : int
41+ + setLevel(level : LogLevel)
42+ + setMessage(message : String)
43+ + setServiceName(serviceName : String)
44+ + setTimestamp(timestamp : LocalDateTime)
45+ + toString () : String
46+ }
47+ enum LogLevel {
48+ + DEBUG {static}
49+ + ERROR {static}
50+ + INFO {static}
51+ + valueOf(name : String) : LogLevel {static}
52+ + values() : LogLevel[] {static}
53+ }
54+ class LogProducer {
55+ - LOGGER : Logger {static}
56+ - aggregator : LogAggregator
57+ - serviceName : String
58+ + LogProducer(serviceName : String, aggregator : LogAggregator)
59+ + generateLog(level : LogLevel, message : String)
60+ }
61+ }
62+ LogAggregator --> "- centralLogStore " CentralLogStore
63+ LogEntry --> "- level " LogLevel
64+ CentralLogStore --> "- logs " LogEntry
65+ LogAggregator --> "- buffer " LogEntry
66+ LogAggregator --> "- minLogLevel " LogLevel
67+ LogProducer --> "- aggregator " LogAggregator
68+ @enduml
0 commit comments