From 7f802671c6e80d4b4f8e23cfa2c90b7b2745a5c5 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sun, 5 Sep 2010 18:30:04 +0800 Subject: [PATCH] LogManager: Start designing the API and access. --- LogManager.st | 146 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 LogManager.st diff --git a/LogManager.st b/LogManager.st new file mode 100644 index 0000000..409a06a --- /dev/null +++ b/LogManager.st @@ -0,0 +1,146 @@ +"Copyright placeholder" + +Object extend [ + logConfig [ + + "I provide access to the global LogConfig" + ^ LogConfig instance + ] + + logManager [ + + ^ LogManager default + ] + + logDebug: aMessage area: anArea [ + + (self logManager) + log: aMessage source: self area: anArea level: LogLevel debug + ] + + logInfo: aMessage area: anArea [ + + (self logManager) + log: aMessage source: self area: anArea level: LogLevel info + ] + + logNotice: aMessage area: anArea [ + + (self logManager) + log: aMessage source: self area: anArea level: LogLevel notice + ] + + logError: aMessage area: anArea [ + + (self logManager) + log: aMessage source: self area: anArea level: LogLevel error + ] +] + +Object subclass: LogLevel [ + + + + LogLevel class >> debug [ + ^ #logDebug + ] + + LogLevel class >> info [ + ^ #logInfo + ] + + LogLevel class >> notice [ + ^ #logNotice + ] + + LogLevel class >> error [ + ^ #logError + ] +] + +Object subclass: LogArea [ + | name enabled level | + + + + LogArea class >> withName: aName enabled: anEnabled level: aLevel [ + + ^ (LogArea new) + name: aName; + enabled: anEnabled; + level: aLevel; + yourself + ] + + name [ + + ^ name + ] + + name: aName [ + + name := aName. + ] + + enabled [ + + ^ enabled + ] + + enabled: anEnabled [ + + enabled := anEnabled. + ] + + level [ + + ^ level + ] + + level: aLevel [ + + level := aLevel + ] +] + +Object subclass: LogConfig [ + | areas | + + + + + Config := LogConfig new. + + LogConfig class >> default [ + + + ^ Config + ] + + addArea: anArea name: aName [ + + "Add the area to the list of areas" + "TODO: compile the area..." + ] + + areas [ + ^ areas + ] +] + +Object subclass: LogManager [ + + + + Log := LogManager new. + + LogManager class >> default [ + + ^ Log + ] + + log: message source: anObject area: anArea level: anLevel [ + + Transcript show: message; nl. + ] +]