TCLog.m 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. //
  2. // TCLog.m
  3. // TCLVBIMDemo
  4. //
  5. // Created by kuenzhang on 16/9/5.
  6. // Copyright © 2016年 tencent. All rights reserved.
  7. //
  8. #import "TCLog.h"
  9. @implementation TCLog
  10. {
  11. NSString* _logFilePath;
  12. FILE* _pFileHandle;
  13. }
  14. static TCLog *_shareInstance = nil;
  15. + (instancetype)shareInstance
  16. {
  17. static dispatch_once_t predicate;
  18. dispatch_once(&predicate, ^{
  19. _shareInstance = [[TCLog alloc] init];
  20. });
  21. return _shareInstance;
  22. }
  23. - (instancetype)init
  24. {
  25. if (self = [super init])
  26. {
  27. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES);
  28. NSString *path = [paths objectAtIndex:0];
  29. NSDate *date = [NSDate date];
  30. NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
  31. formatter.dateFormat = @"yyyyMMdd";
  32. NSString *res = [formatter stringFromDate:date];
  33. _logFilePath = [NSString stringWithFormat:@"%@/Caches/rtmpsdk_%@.log",path,res];
  34. }
  35. return self;
  36. }
  37. -(void) dealloc
  38. {
  39. if (_pFileHandle)
  40. {
  41. fclose(_pFileHandle);
  42. }
  43. _pFileHandle = NULL;
  44. }
  45. -(void) onLog:(NSString*)log LogLevel:(int)level WhichModule:(NSString*)module
  46. {
  47. NSLog(@"rtmpsdk:%@",log);
  48. NSDate *date = [NSDate date];
  49. NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
  50. formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss.SSS";
  51. NSString *formatDate = [formatter stringFromDate:date];
  52. NSString *logMsg = [NSString stringWithFormat:@"%@|level:%d|module:%@|%@\n",formatDate,level,module,log];
  53. [self writeLogFile:logMsg];
  54. }
  55. -(void) writeLogFile:(NSString*)log
  56. {
  57. if (_pFileHandle == NULL)
  58. {
  59. _pFileHandle = fopen((char*)_logFilePath.UTF8String, "aw+");
  60. }
  61. if (_pFileHandle)
  62. {
  63. fwrite(log.UTF8String, 1, strlen(log.UTF8String), _pFileHandle);
  64. }
  65. }
  66. -(void) log:(NSString *)formatStr, ...
  67. {
  68. if (!formatStr)
  69. return;
  70. va_list arglist;
  71. va_start(arglist, formatStr);
  72. NSString *outStr = [[NSString alloc] initWithFormat:formatStr arguments:arglist];
  73. va_end(arglist);
  74. NSLog(@"applog:%@", outStr);
  75. NSDate *date = [NSDate date];
  76. NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
  77. formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss.SSS";
  78. NSString *formatDate = [formatter stringFromDate:date];
  79. NSString *logMsg = [NSString stringWithFormat:@"%@|applog|%@\n",formatDate,outStr];
  80. [self writeLogFile:logMsg];
  81. }
  82. @end