FLEXSystemLogMessage.m 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //
  2. // FLEXSystemLogMessage.m
  3. // UICatalog
  4. //
  5. // Created by Ryan Olson on 1/25/15.
  6. // Copyright (c) 2015 f. All rights reserved.
  7. //
  8. #import "FLEXSystemLogMessage.h"
  9. #import <asl.h>
  10. @implementation FLEXSystemLogMessage
  11. +(instancetype)logMessageFromASLMessage:(aslmsg)aslMessage
  12. {
  13. FLEXSystemLogMessage *logMessage = [[FLEXSystemLogMessage alloc] init];
  14. const char *timestamp = asl_get(aslMessage, ASL_KEY_TIME);
  15. if (timestamp) {
  16. NSTimeInterval timeInterval = [@(timestamp) integerValue];
  17. const char *nanoseconds = asl_get(aslMessage, ASL_KEY_TIME_NSEC);
  18. if (nanoseconds) {
  19. timeInterval += [@(nanoseconds) doubleValue] / NSEC_PER_SEC;
  20. }
  21. logMessage.date = [NSDate dateWithTimeIntervalSince1970:timeInterval];
  22. }
  23. const char *sender = asl_get(aslMessage, ASL_KEY_SENDER);
  24. if (sender) {
  25. logMessage.sender = @(sender);
  26. }
  27. const char *messageText = asl_get(aslMessage, ASL_KEY_MSG);
  28. if (messageText) {
  29. logMessage.messageText = @(messageText);
  30. }
  31. const char *messageID = asl_get(aslMessage, ASL_KEY_MSG_ID);
  32. if (messageID) {
  33. logMessage.messageID = [@(messageID) longLongValue];
  34. }
  35. return logMessage;
  36. }
  37. - (BOOL)isEqual:(id)object
  38. {
  39. return [object isKindOfClass:[FLEXSystemLogMessage class]] && self.messageID == [object messageID];
  40. }
  41. - (NSUInteger)hash
  42. {
  43. return (NSUInteger)self.messageID;
  44. }
  45. @end