| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- //
- // 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)logMessageFromOSLog:(os_log_message_t)logMessage
- {
- abort();
- return nil;
- }
- + (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:@"(%lu) %@", self.messageText.length, escaped];
- }
- @end
|