]> err.no Git - sope/blobdiff - sope-core/NGExtensions/NGLogging.subproj/NGLogEvent.m
Drop apache 1 build-dependency
[sope] / sope-core / NGExtensions / NGLogging.subproj / NGLogEvent.m
index 3de406bdac4e943b97cb9828b413c51757d734fa..c095c1900043651226e72dac5cd23e6094937d24 100644 (file)
@@ -1,20 +1,20 @@
 /*
-  Copyright (C) 2000-2004 SKYRIX Software AG
+  Copyright (C) 2000-2005 SKYRIX Software AG
   
-  This file is part of OpenGroupware.org.
+  This file is part of SOPE.
   
-  OGo is free software; you can redistribute it and/or modify it under
+  SOPE is free software; you can redistribute it and/or modify it under
   the terms of the GNU Lesser General Public License as published by the
   Free Software Foundation; either version 2, or (at your option) any
   later version.
   
-  OGo is distributed in the hope that it will be useful, but WITHOUT ANY
+  SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
   WARRANTY; without even the implied warranty of MERCHANTABILITY or
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
   License for more details.
   
   You should have received a copy of the GNU Lesser General Public
-  License along with OGo; see the file COPYING.  If not, write to the
+  License along with SOPE; see the file COPYING.  If not, write to the
   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
   02111-1307, USA.
 */
 
 @implementation NGLogEvent
 
-static Class NSDateClass = Nil;
+static Class DateClass = Nil;
 
 + (void)initialize {
-  NSDateClass = [NSDate class];
+  static BOOL didInit = NO;
+
+  if (didInit) return;
+  didInit = YES;
+
+  DateClass = [NSCalendarDate class];
 }
 
 - (id)initWithLevel:(NGLogLevel)_level message:(NSString *)_msg {
   self = [super init];
-  if(self) {
-    self->date    = [NSDateClass timeIntervalSinceReferenceDate];
-    self->level   = _level;
-    self->msg     = [_msg copy];
+  if (self) {
+    // TODO: get time using libc function, cheaper
+    self->date  = [DateClass timeIntervalSinceReferenceDate];
+    self->level = _level;
+    self->msg   = [_msg copy];
   }
   return self;
 }
 
 - (void)dealloc {
-  [self->msg     release];
+  [self->msg release];
   [super dealloc];
 }
 
@@ -55,8 +61,28 @@ static Class NSDateClass = Nil;
   return self->msg;
 }
 
-- (NSDate *)date {
-  return [NSDateClass dateWithTimeIntervalSinceReferenceDate:self->date];
+- (NSCalendarDate *)date {
+  // TODO: set to GMT?
+  return [DateClass dateWithTimeIntervalSinceReferenceDate:self->date];
+}
+
+/* description */
+
+- (NSString *)description {
+  NSString *lvl;
+  
+  switch (self->level) {
+    case NGLogLevelOff:   lvl = @"OFF";   break;
+    case NGLogLevelDebug: lvl = @"DEBUG"; break;
+    case NGLogLevelInfo:  lvl = @"INFO";  break;
+    case NGLogLevelWarn:  lvl = @"WARN";  break;
+    case NGLogLevelError: lvl = @"ERROR"; break;
+    case NGLogLevelFatal: lvl = @"FATAL"; break;
+    default:              lvl = @"ALL";   break;
+  }
+  return [NSString stringWithFormat:@"<%@[0x%p] date=%@ level=%@ msg:%@>",
+                      NSStringFromClass([self class]), self,
+                      [self date], lvl, self->msg];
 }
 
 @end /* NGLogEvent */