]> err.no Git - sope/commitdiff
improved API and documentation
authorznek <znek@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Wed, 17 Nov 2004 18:29:39 +0000 (18:29 +0000)
committerznek <znek@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Wed, 17 Nov 2004 18:29:39 +0000 (18:29 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@389 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

13 files changed:
sope-core/NGExtensions/ChangeLog
sope-core/NGExtensions/NGExtensions/NGLogAppender.h
sope-core/NGExtensions/NGExtensions/NGLogConsoleAppender.h
sope-core/NGExtensions/NGExtensions/NGLogEvent.h
sope-core/NGExtensions/NGExtensions/NGLogSyslogAppender.h
sope-core/NGExtensions/NGExtensions/NGLogger.h
sope-core/NGExtensions/NGExtensions/NGLoggerManager.h
sope-core/NGExtensions/NGExtensions/NGLogging.h
sope-core/NGExtensions/NGExtensions/NSObject+ExtendedLogging.h
sope-core/NGExtensions/NGLogging.subproj/ChangeLog
sope-core/NGExtensions/NGLogging.subproj/NGLoggerManager.m
sope-core/NGExtensions/NGLogging.subproj/NSObject+ExtendedLogging.m
sope-core/NGExtensions/Version

index 29e08c57cbb32a2861da7dd0cd6c30640c09e049..6679ca3e24cb1268f568c6643b6d3eb2e83891be 100644 (file)
@@ -1,5 +1,7 @@
 2004-11-17  Marcus Mueller  <znek@mulle-kybernetik.com>
 
+       * NGLogging: updated (v4.5.132)
+
        * NGLogging: updated (v4.5.131)
 
 2004-11-17  Matthew Joyce  <mjoyce@aboveit.nl>
index 3de602acb859080bfe8b4451304443f1c9573a91..713413dcf75f2b3ce0aa555fff9e0d5f18b46019 100644 (file)
@@ -23,6 +23,8 @@
 #define        __NGExtensions_NGLogAppender_H_
 
 /*
+  NGLogAppender
+
   Abstract superclass for all log appenders.
 */
 
index ec8c8b747e118c0ccfaecfe22b34e35a060cdbdd..2fca9c9cc1d6b3ac1db3f7c084e4054dca56e5dc 100644 (file)
 #ifndef        __NGExtensions_NGLogConsoleAppender_H_
 #define        __NGExtensions_NGLogConsoleAppender_H_
 
+/*
+  NGLogConsoleAppender
+  A very simple console appender. The current implementation logs the
+  formatted event via NSLog(). Please note that doing so discards the timestamp
+  saved in the event, so the logged time isn't really exact, but will probably
+  only differ marginally.
+*/
+
 #include <NGExtensions/NGLogAppender.h>
 
 @interface NGLogConsoleAppender : NGLogAppender
index b507c96fdab25a0ff65376d5d119aae4fb7a135e..8b2f8b4240ed1f1da542a77cddaad981e89c33b9 100644 (file)
 #ifndef        __NGExtensions_NGLogEvent_H_
 #define        __NGExtensions_NGLogEvent_H_
 
+/*
+  NGLogEvent
+  Instances of this class encapsulate log events, retaining all vital
+  information associated with it. Log events are generally passed on to
+  log appenders for further treatment.
+*/
+
 #import <Foundation/NSObject.h>
 #import <Foundation/NSDate.h>
 
index 2539e7b6d3d6c64c9195a920810307e71c730687..17bec5a89f4e36ed313679ec41197c8cf5f323d7 100644 (file)
 #ifndef        __NGExtensions_NGLogSyslogAppender_H_
 #define        __NGExtensions_NGLogSyslogAppender_H_
 
-#include <NGExtensions/NGLogAppender.h>
-
 /*
   NGLogSyslogAppender
   
-  An appender which writes to the systems syslog facility.
+  An appender which writes to the system's syslog facility.
+  Use the user default key "NGLogSyslogIdentifier" to set the syslog
+  identifier. The syslog identifier is a string that will be prepended to every
+  message. See your operating system's manpage on syslog for details.
+
+  Note: syslog doesn't support user provided timestamps, thus this information
+        provided by NGLogEvent is silently discarded.
+
+  The following scheme is used to map NGLogLevels to syslog's levels:
+  NGLogLevel          syslog
+  --------------------------
+  NGLogLevelDebug     LOG_DEBUG
+  NGLogLevelInfo      LOG_INFO
+  NGLogLevelWarn      LOG_WARNING
+  NGLogLevelError     LOG_ERR
+  NGLogLevelFatal     LOG_ALERT
 */
 
+#include <NGExtensions/NGLogAppender.h>
+
 @class NSString;
 
 @interface NGLogSyslogAppender : NGLogAppender
index d5dbda1a72c8acf9ffbb4add775b7ebcdcd19cc6..72c86ef8f67e702c9fa797bc4a491ac9eeb98bee 100644 (file)
 /*
   NGLogger
   
-  A logger class, modeled closely after Log4J.
-  
-  TODO: explain more.
+  NGLogger has a minimum log level and passes messages to its appenders
+  only if this minimum log level is satisfied - otherwise it silently drops
+  these messages.
+
+  Note: Except in rare circumstances, do not allocate loggers yourself. Always
+        try to use the appropriate API of NGLoggerManager if possible.
+  Note: Currently the NGLogger implementation lacks an API for configuring
+        appenders. Until this has been done appropriately, use the
+        "NGLogDefaultAppenderClass" user default to select an appropriate
+        default appender. If this default isn't set, "NGLogConsoleAppender"
+        is used.
 */
 
 #import <Foundation/NSObject.h>
index b83c1398ceb74293b92fa99b373e5dd1b2b6b942..f1e74ecf8a2feb88db73af1a2fd3bbee3470d51a 100644 (file)
 #ifndef        __NGExtensions_NGLoggerManager_H_
 #define        __NGExtensions_NGLoggerManager_H_
 
+/*
+  NGLoggerManager
+
+  Manages a set of loggers by associating logger instances with names. Thus
+  clients will be given the same instances if accessing the manager with the
+  same name/key. Also, NGLoggerManager offers conditional creation of loggers
+  based on user default keys (and special values associated with these keys).
+
+  It's planned that NGLoggerManager will be provided with a configuration of
+  some sort at a later stage, so configuration of log levels and appenders for
+  loggers can reach a similar dynamism as is currently achieved in Log4J.
+*/
+
 #import <Foundation/NSObject.h>
 
 @class NSString, NSMutableDictionary;
 
 + (id)defaultLoggerManager;
 
-/* operations */
-
+/* Retrieves a logger conditional to the existence of the given default key.
+   In order to stay backwards compatible to existing applications, a boolean
+   value auf YES associated with this key sets the default log level of this
+   logger to NGLogLevelDebug. Other possible values for this key include
+   "DEBUG, "INFO", "WARN", "ERROR" and "FATAL". Everything else will be mapped
+   to NGLogLevelAll. If the requested default key is not set, *nil* is
+   returned.
+*/
 - (NGLogger *)loggerForDefaultKey:(NSString *)_defaultKey;
 
+/* Retrieves a "named" logger with NGLogLevelAll. */
+- (NGLogger *)loggerForFacilityNamed:(NSString *)_name;
+- (NGLogger *)loggerForClass:(Class)_clazz;
+
 @end
 
 #endif /* __NGExtensions_NGLoggerManager_H_ */
index b4d0b4b88d0294e841cd0872db44de4a840cc2a3..efb4aac6be27b7fd454034746cb9e5801fff72dc 100644 (file)
 #define        __NGExtensions_NGLogging_H_
 
 /*
-  NGLogging is a somewhat more sophisticated logging framework, modeled
-  apparently similar to log4j - without some of its bloat.
+  NGLogging is a new logging framework, modeled in a similar fashion as Log4J
+  - without some of its bloat.
+
+  Documentation is currently provided in the headers only.
 */
 
 #include <NGExtensions/NSObject+ExtendedLogging.h>
index afdf3dea613e9c6a83d2453af07c8854770ed891..8fc860f2ab12849805c12afeff21e43b37cd1157 100644 (file)
 #ifndef        __NSObject_ExtendedLogging_H_
 #define        __NSObject_ExtendedLogging_H_
 
+/*
+  Logging convenience for the new NGLogger based API.
+  The default implementation uses the "NGDefaultLogLevel" user default key to
+  retrieve a logger from the NGLoggerManager. If this default isn't set,
+  a default logger with log level NGLogLevelInfo will be instantiated.
+  Consult the header of NGLoggerManager for further details on setting the
+  "NGDefaultLogLevel" user default.
+*/
+
 #import <Foundation/NSObject.h>
 
 typedef enum {
@@ -36,6 +47,7 @@ typedef enum {
 
 @interface NSObject(NGExtendedLogging)
 
++ (id)logger;
 - (id)logger;
 
 /* convenience methods */
index dfb9ca4e2c75ba6298ef3e4a8da36e069775ee0e..6626a0ccdd7603f9fe35012a502d2bea105c0fcb 100644 (file)
@@ -1,5 +1,10 @@
 2004-11-17  Marcus Mueller  <znek@mulle-kybernetik.com>
 
+       * *.h: provided some documentation
+
+       * NGLoggerManager.[hm]: new method -loggerForFacilityNamed: for
+         sharing/referencing instances based on names.
+
        * NSObject+NGExtendedLogging.h: fixed some serious misordering in
          log levels (thanks to Helge Hess for reporting this! ;-)
 
index d598e8b02842e0de4f6f32c177e0eddb515b520e..4d442a69b51822e0cb9a16e61b4c5dcf846222c4 100644 (file)
@@ -92,6 +92,26 @@ static NSNull          *sharedNull;
   return (logger != sharedNull) ? logger : nil;
 }
 
+- (NGLogger *)loggerForFacilityNamed:(NSString *)_name {
+  id logger;
+  
+  logger = [self->loggerMap objectForKey:_name];
+  if (!logger) {
+    logger = [[NGLogger alloc] init];
+    [self->loggerMap setObject:logger forKey:_name];
+    [logger release];
+  }
+  return logger;
+}
+
+- (NGLogger *)loggerForClass:(Class)_clazz {
+  NSString *name;
+  
+  name = NSStringFromClass(_clazz);
+  return [self loggerForFacilityNamed:name];
+}
+
+
 /* Private */
 
 - (NGLogLevel)_logLevelForString:(NSString *)_defaultValue {
index 4551c7e8896b16a8fe100ca86fb5947bab614e65..dba4b6fad416e9c61247103166edf9ca4b416216 100644 (file)
 
 @implementation NSObject(NGExtendedLogging)
 
-- (id)logger {
-  static id   sharedLogger = nil;
-  static BOOL shouldLog    = YES;
++ (id)logger {
+  static id sharedLogger = nil;
   
-  if (sharedLogger == nil && shouldLog) {
+  if (sharedLogger == nil) {
     NGLoggerManager *lm;
-    
+
     lm           = [NGLoggerManager defaultLoggerManager];
     sharedLogger = [lm loggerForDefaultKey:@"NGDefaultLogLevel"];
-    if (!sharedLogger)
-      shouldLog = NO;
+    if (!sharedLogger) {
+      sharedLogger = [lm loggerForFacilityNamed:@"root"];
+      [sharedLogger setLogLevel:NGLogLevelInfo];
+    }
   }
   return sharedLogger;
 }
 
+- (id)logger {
+  return [[self class] logger];
+}
+
 /* log methods */
 
 - (void)logDebugWithFormat:(NSString *)_fmt, ... {
@@ -49,7 +54,7 @@
   va_list va;
   
   logger = [self logger];
-  if(![logger isLogDebugEnabled])
+  if (![logger isLogDebugEnabled])
     return;
   
   va_start(va, _fmt);
@@ -65,7 +70,7 @@
   va_list va;
   
   logger = [self logger];
-  if(![logger isLogInfoEnabled])
+  if (![logger isLogInfoEnabled])
     return;
   
   va_start(va, _fmt);
@@ -81,7 +86,7 @@
   va_list va;
   
   logger = [self logger];
-  if(![logger isLogWarnEnabled])
+  if (![logger isLogWarnEnabled])
     return;
   
   va_start(va, _fmt);
   va_list va;
   
   logger = [self logger];
-  if(![logger isLogErrorEnabled])
+  if (![logger isLogErrorEnabled])
     return;
   
   va_start(va, _fmt);
   va_list va;
 
   logger = [self logger];
-  if(![logger isLogFatalEnabled])
+  if (![logger isLogFatalEnabled])
     return;
 
   va_start(va, _fmt);
index d4cea4ee617f91cd7192d97f72ca91cccb74d872..52895010acf641ce6928bc16e016a0e1bf5af45e 100644 (file)
@@ -1,6 +1,6 @@
 # version
 
-SUBMINOR_VERSION:=131
+SUBMINOR_VERSION:=132
 
 # v4.3.115 requires libFoundation v1.0.59
 # v4.2.72  requires libEOControl  v4.2.39