You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// // FLEXSystemLogMessage.m // FLEX // // Created by Ryan Olson on 1/25/15. // Copyright (c) 2015 f. All rights reserved. //
#import "FLEXSystemLogMessage.h"
@implementation FLEXSystemLogMessage
+ (instancetype)logMessageFromASLMessage:(aslmsg)aslMessage { NSDate *date = nil; NSString *sender = nil, *text = nil; long long identifier = 0;
const char *timestamp = asl_get(aslMessage, ASL_KEY_TIME); if (timestamp) { NSTimeInterval timeInterval = [@(timestamp) integerValue]; const char *nanoseconds = asl_get(aslMessage, ASL_KEY_TIME_NSEC); if (nanoseconds) { timeInterval += [@(nanoseconds) doubleValue] / NSEC_PER_SEC; } date = [NSDate dateWithTimeIntervalSince1970:timeInterval]; }
const char *s = asl_get(aslMessage, ASL_KEY_SENDER); if (s) { sender = @(s); }
const char *messageText = asl_get(aslMessage, ASL_KEY_MSG); if (messageText) { text = @(messageText); }
const char *messageID = asl_get(aslMessage, ASL_KEY_MSG_ID); if (messageID) { identifier = [@(messageID) longLongValue]; }
FLEXSystemLogMessage *message = [[self alloc] initWithDate:date sender:sender text:text messageID:identifier]; message->_aslMessage = aslMessage; return message; }
+ (instancetype)logMessageFromDate:(NSDate *)date text:(NSString *)text { return [[self alloc] initWithDate:date sender:nil text:text messageID:0]; }
- (id)initWithDate:(NSDate *)date sender:(NSString *)sender text:(NSString *)text messageID:(long long)identifier { self = [super init]; if (self) { _date = date; _sender = sender; _messageText = text; _messageID = identifier; }
return self; }
- (BOOL)isEqual:(id)object { if ([object isKindOfClass:[self class]]) { if (self.messageID) { // Only ASL uses messageID, otherwise it is 0 return self.messageID == [object messageID]; } else { // Test message texts and dates for OS Log return [self.messageText isEqual:[object messageText]] && [self.date isEqualToDate:[object date]]; } } return NO; }
- (NSUInteger)hash { return (NSUInteger)self.messageID; }
- (NSString *)description { NSString *escaped = [self.messageText stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"]; return [NSString stringWithFormat:@"(%@) %@", @(self.messageText.length), escaped]; }
@end
|