소스 검색

Pass `DDLogMessage` on to serializer

Florian Friedrich 2 년 전
부모
커밋
9681d618e6
2개의 변경된 파일23개의 추가작업 그리고 18개의 파일을 삭제
  1. 13 16
      Sources/CocoaLumberjack/DDFileLogger.m
  2. 10 2
      Sources/CocoaLumberjack/include/CocoaLumberjack/DDFileLogger.h

+ 13 - 16
Sources/CocoaLumberjack/DDFileLogger.m

@@ -64,8 +64,8 @@ NSTimeInterval     const kDDRollingLeeway              = 1.0;              // 1s
     return [super init];
 }
 
-- (NSData *)dataForMessage:(NSString *)message {
-    return [message dataUsingEncoding:NSUTF8StringEncoding];
+- (NSData *)dataForString:(NSString *)string originatingFromMessage:(DDLogMessage *)message {
+    return [string dataUsingEncoding:NSUTF8StringEncoding];
 }
 
 @end
@@ -450,7 +450,7 @@ NSTimeInterval     const kDDRollingLeeway              = 1.0;              // 1s
         fileHeaderStr = [fileHeaderStr stringByAppendingString:@"\n"];
     }
 
-    return [_logMessageSerializer dataForMessage:fileHeaderStr];
+    return [_logMessageSerializer dataForString:fileHeaderStr originatingFromMessage:nil];
 }
 
 - (NSString *)createNewLogFileWithError:(NSError *__autoreleasing  _Nullable *)error {
@@ -1349,7 +1349,7 @@ static int exception_count = 0;
         implementsDeprecatedDidLog = [self respondsToSelector:@selector(didLogMessage)];
     });
 
-    NSAssert([self isOnInternalLoggerQueue], @"logMessage should only be executed on internal queue.");
+    NSAssert([self isOnInternalLoggerQueue], @"lt_logData should only be executed on internal queue.");
 
     if (data.length == 0) {
         return;
@@ -1423,24 +1423,24 @@ static int exception_count = 0;
 - (NSData *)lt_dataForMessage:(DDLogMessage *)logMessage {
     NSAssert([self isOnInternalLoggerQueue], @"lt_dataForMessage should only be executed on internal queue.");
 
-    NSString *message = logMessage->_message;
-    BOOL isFormatted = NO;
+    __auto_type messageString = logMessage->_message;
+    __auto_type isFormatted = NO;
 
     if (_logFormatter != nil) {
-        message = [_logFormatter formatLogMessage:logMessage];
-        isFormatted = message != logMessage->_message;
+        messageString = [_logFormatter formatLogMessage:logMessage];
+        isFormatted = messageString != logMessage->_message;
     }
 
-    if (message.length == 0) {
+    if (messageString.length == 0) {
         return nil;
     }
 
-    BOOL shouldFormat = !isFormatted || _automaticallyAppendNewlineForCustomFormatters;
-    if (shouldFormat && ![message hasSuffix:@"\n"]) {
-        message = [message stringByAppendingString:@"\n"];
+    __auto_type shouldFormat = !isFormatted || _automaticallyAppendNewlineForCustomFormatters;
+    if (shouldFormat && ![messageString hasSuffix:@"\n"]) {
+        messageString = [messageString stringByAppendingString:@"\n"];
     }
 
-    return [[self lt_logFileSerializer] dataForMessage:message];
+    return [[self lt_logFileSerializer] dataForString:messageString originatingFromMessage:logMessage];
 }
 
 @end
@@ -1464,12 +1464,9 @@ static NSString * const kDDXAttrArchivedName = @"lumberjack.log.archived";
 }
 
 #if TARGET_IPHONE_SIMULATOR
-
 // Old implementation of extended attributes on the simulator.
-
 - (BOOL)_hasExtensionAttributeWithName:(NSString *)attrName;
 - (void)_removeExtensionAttributeWithName:(NSString *)attrName;
-
 #endif
 
 @end

+ 10 - 2
Sources/CocoaLumberjack/include/CocoaLumberjack/DDFileLogger.h

@@ -58,11 +58,19 @@ extern unsigned long long const kDDDefaultLogFilesDiskQuota;
 
 /// Returns the binary representation of the message.
 /// - Parameter message: The formatted log message to serialize.
-- (NSData *)dataForMessage:(NSString *)message;
+//
+
+/// Returns the binary representation of the message.
+/// - Parameters:
+///   - string: The string to serialize. Usually, this is the formatted message, but it can also be e.g. a log file header.
+///   - message: The message which represents the `string`. This is null, if `string` is e.g. a log file header.
+/// - Note: The `message` parameter should not be used for formatting! It should simply be used to extract the necessary metadata for serializing.
+- (NSData *)dataForString:(NSString *)string
+   originatingFromMessage:(nullable DDLogMessage *)message NS_SWIFT_NAME(dataForString(_:originatingFrom:));
 
 @end
 
-/// The plain text (default) message serializer.
+/// The (default) plain text message serializer.
 @interface DDFileLogPlainTextMessageSerializer : NSObject <DDFileLogMessageSerializer>
 
 - (instancetype)init;