Skip to content

Commit

Permalink
Full class reorganization for better documentation and understandability
Browse files Browse the repository at this point in the history
  • Loading branch information
jhannes committed Dec 11, 2021
1 parent 6392403 commit 28a97b6
Show file tree
Hide file tree
Showing 541 changed files with 13,296 additions and 8,191 deletions.
4 changes: 2 additions & 2 deletions MANUAL.md
Original file line number Diff line number Diff line change
Expand Up @@ -517,12 +517,12 @@ observer.slack.formatter.sourceCode.3.tag=release

Logevents comes with two servlets that you can add to your servlet container.

`org.logevents.extend.servlets.LogEventsServlet.doGet` can list up
`org.logevents.optional.servlets.LogEventsServlet.doGet` can list up
log events as JSON (to be formatted by your own JavaScript). It supports
four optional query parameters: `level` (default INFO), `category`, `offset`
and `count`. (TODO)

`org.logevents.extend.servlets.LogEventConfigurationServlet`:
`org.logevents.optional.servlets.LogEventConfigurationServlet`:
`doGet` lists up all active loggers and observers as JSON.
`doPost` allows to change the level and observer (TODO) for a single logger.

Expand Down
Binary file added doc/classes-simple.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
94 changes: 59 additions & 35 deletions doc/classes-simple.puml
Original file line number Diff line number Diff line change
@@ -1,35 +1,59 @@
@startuml

package "slf4j" {
interface Logger
interface ILoggerFactory
}

package "org.logevents" {

class LoggerDelegator implements Logger

class LogEventFactory implements ILoggerFactory

interface LogEventObserver {
logEvent(e)
}
LoggerDelegator ..> LogEventObserver

class CompositeLogEventObserver implements LogEventObserver
class ConditionalLogEventObserver implements LogEventObserver
class FileLogEventObserver implements LogEventObserver
CompositeLogEventObserver ..> "*" LogEventObserver
ConditionalLogEventObserver ..> "1" LogEventObserver


package "formatting" {
interface LogEventFormatter
FileLogEventObserver ..> LogEventFormatter
class PatternFormatter implements LogEventFormatter
class TTLLFormatter implements LogEventFormatter
}

}

@enduml
@startuml

package "slf4j" {
interface ILoggerFactory {
getLogger()
}
interface Logger {
error(...)
warn(...)
info(...)
debug(...)
trace(...)
}
ILoggerFactory .right.> Logger: getLogger
}

package "org.logevents" {

interface LoggerDelegator extends Logger
class LogEventFilter
LoggerDelegator -right-> LogEventFilter: ownFilter

class LogEventFactory implements ILoggerFactory

LogEventFactory -right- "*" LoggerDelegator

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

interface LogEventObserver {
logEvent(e)
}
LogEventGenerator ..> LogEventObserver

class CompositeLogEventObserver implements LogEventObserver
class ConditionalLogEventObserver implements LogEventObserver
class FileLogEventObserver implements LogEventObserver
CompositeLogEventObserver ..> "*" LogEventObserver
ConditionalLogEventObserver ..> "1" LogEventObserver


package "formatting" {
interface LogEventFormatter
FileLogEventObserver ..> LogEventFormatter
class PatternFormatter implements LogEventFormatter
class TTLLFormatter implements LogEventFormatter
}

}

@enduml
Binary file modified doc/classes.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
173 changes: 111 additions & 62 deletions doc/classes.puml
Original file line number Diff line number Diff line change
@@ -1,62 +1,111 @@
@startuml

package "slf4j" {
interface Logger
interface ILoggerFactory
}

package "org.logevents" {

class LoggerDelegator implements Logger {
levelThreshold : Level|"Inherit"
ownObserver : LogEventObserver
inheritParentObserver : boolean
}

class LogEventFactory implements ILoggerFactory {
setLogLevel(logger, level)
setLogEventObserver(logger, observer, inheritParent)
addObserver(logger, observer)
}

interface LogEventGenerator
LoggerDelegator ..> LogEventGenerator

class NullLogEventGenerator implements LogEventGenerator
class LevelLoggingEventGenerator implements LogEventGenerator

interface LogEventObserver {
name
configure(Properties)
logEvent(e)
}
LevelLoggingEventGenerator ..> LogEventObserver

class CompositeLogEventObserver implements LogEventObserver
class ConditionalLogEventObserver implements LogEventObserver
class BatchingLogEventObserver implements LogEventObserver {
idleTime
cooldownTime
maximumWaitTime
}
class CircularBufferLogEventDestination implements LogEventObserver
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 LogEventBatchProcessor
BatchingLogEventObserver ..> LogEventBatchProcessor

}

@enduml
@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
Loading

0 comments on commit 28a97b6

Please sign in to comment.