Meituan-Dianping / Logan

Logan is a lightweight case logging system based on mobile platform.
https://tech.meituan.com/logan_open_source.html
MIT License
5.73k stars 876 forks source link

loganSetMaxReversedDate时间设置好像不生效 #475

Closed woaiyouxi0803 closed 1 year ago

woaiyouxi0803 commented 1 year ago

设置loganSetMaxReversedDate(7),或者不设置,都是7天后过期才对。 现在看到都是1天就没了。日志大小都没有超过设置。

NSData *keydata = [kLogankeydata dataUsingEncoding:NSUTF8StringEncoding];
NSData *ivdata = [kLoganIvdata dataUsingEncoding:NSUTF8StringEncoding];
uint64_t file_max = 25 * 1024 * 1024;

loganSetMaxReversedDate(7);//日志保留天数,默认7天
loganInit(keydata, ivdata, file_max);

---写入 logan(type , dateString); loganFlush(); ----上传loganUpload

Richard-Cao commented 1 year ago

1天就没了是指文件被删掉了?

woaiyouxi0803 commented 1 year ago

1天就没了是指文件被删掉了?

就是用户上传的日志,日志都是当天的。 代码就上面的,没有进行删的操作。 在想会不会路径问题,被系统删了

Richard-Cao commented 1 year ago

1天就没了是指文件被删掉了?

就是用户上传的日志,日志都是当天的。 代码就上面的,没有进行删的操作。 在想会不会路径问题,被系统删了

那你先看一下 是不是被删了

woaiyouxi0803 commented 1 year ago

找到问题原因了,loganUpload中第二个参数使用了loganTodaysDate(),为今天日期。 loganUpload中第二个参数为日期字符串,格式为 @"yyyy-MM-dd"。

获取本地所有在线日志: NSArray<NSString > dates = [loganAllFilesInfo().allKeys sortedArrayUsingSelector:@selector(compare:)]; 数组中每一个参数都可以作为loganUpload中第二个参数使用。

建议成功上传后删除本地日志

 NSError *err = nil;
 NSString *path = [self log_path:date];
 [[NSFileManager defaultManager] removeItemAtPath:path error:&err];

/// 日志路径

+ (NSString *)log_path:(NSString *)date {
    NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"LoganLoggerv3"];
    if (date) {
        return [path stringByAppendingPathComponent:date];
    }
    return path;
}