/** * Created by G-Canvas Open Source Team. * Copyright (c) 2017, Alibaba, Inc. All rights reserved. * * This source code is licensed under the Apache Licence 2.0. * For the full copyright and license information, please view * the LICENSE file in the root directory of this source tree. */ #import "GCVCommon.h" #ifdef ENABLE_GCVLOG @implementation GCVLog + (instancetype)sharedInstance{ static GCVLog *sharedInstance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedInstance = [[self alloc] init]; sharedInstance.logLevel = GCVLogLevelInfo; }); return sharedInstance; } + (void) writeLog:(GCVLogLevel)logLevel funcName:(const char *)funcName format: (NSString *)fmt, ...{ if ( logLevel < [GCVLog sharedInstance].logLevel ){ return; } static int logLimit = 256; va_list va; va_start(va, fmt); NSString *fullLog = [[NSString alloc] initWithFormat:fmt arguments:va]; if ( fullLog.length > logLimit ){ fullLog = [NSString stringWithFormat:@"[leng:%lu] %@", (unsigned long)fullLog.length, [fullLog substringToIndex:logLimit]]; } if ( strlen(funcName)>64 ){ NSLog(@"%.64s...] %@", funcName, fullLog); } else { NSLog(@"%s %@", funcName, fullLog); } va_end(va); } @end #endif