forked from jhannes/logevents
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclasses.puml
111 lines (96 loc) · 2.83 KB
/
classes.puml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
@startuml
package "slf4j" {
interface ILoggerFactory {
getLogger()
}
interface Logger {
error(...)
warn(...)
info(...)
debug(...)
trace(...)
}
ILoggerFactory .right.> Logger: getLogger
}
package "org.logevents" {
interface LogEventLogger extends Logger {
/effectiveFilter
ownObserver : LogEventObserver
inheritParentObserver : boolean
}
class LogEventFilter {
addLoggingCondition()
createLogEventGenerator()
}
LogEventLogger -right-> LogEventFilter: ownFilter
interface LogEventPredicate {
test(:LogEvent): boolean
}
LogEventFilter "[level]" --> LogEventPredicate
class AlwaysPredicate implements LogEventPredicate
class NeverPredicate implements LogEventPredicate
class MarkerCondition implements LogEventPredicate {
markers
}
class MdcCondition implements LogEventPredicate {
mdcName
requiredValues
}
class LoggerDelegator implements LogEventLogger {
error(...)
warn(...)
info(...)
debug(...)
trace(...)
}
class LogEventFactory implements ILoggerFactory {
setLogLevel(logger, level)
setObserver(logger, observer, inheritParent)
addObserver(logger, observer)
}
LogEventFactory -right- "*" LogEventLogger: loggers
interface LogEventGenerator {
log(msg:String)
log(:Marker, msg:String)
log(msg:String, args:Object[])
}
LoggerDelegator --> LogEventGenerator: error
LoggerDelegator --> LogEventGenerator: warn
LoggerDelegator --> LogEventGenerator: info
LoggerDelegator --> LogEventGenerator: debug
LoggerDelegator --> LogEventGenerator: trace
class NullLogEventGenerator implements LogEventGenerator
class LevelLoggingEventGenerator implements LogEventGenerator {
: Level
}
class ConditionalLogEventGenerator implements LogEventGenerator {
: LogEventPredicate
}
interface LogEventObserver {
logEvent(e: LogEvent)
}
LevelLoggingEventGenerator ..> LogEventObserver
ConditionalLogEventGenerator ..> LogEventObserver
class CompositeLogEventObserver implements LogEventObserver
class ConditionalLogEventObserver implements LogEventObserver
abstract class BatchingLogEventObserver implements LogEventObserver {
idleTime
cooldownTime
maximumWaitTime
--
# {abstract} processBatch()
}
class FileLogEventObserver implements LogEventObserver
class ConsoleLogEventObserver implements LogEventObserver
CompositeLogEventObserver --> "*" LogEventObserver
ConditionalLogEventObserver --> "1" LogEventObserver
package "formatting" {
interface LogEventFormatter
FileLogEventObserver --> LogEventFormatter
ConsoleLogEventObserver --> LogEventFormatter
class PatternFormatter implements LogEventFormatter
class TTLLFormatter implements LogEventFormatter
class JsonFormatter implements LogEventFormatter
}
}
@enduml