-
Notifications
You must be signed in to change notification settings - Fork 874
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
android:日志上传 #61
Comments
当上传的日志是当日日志,会创建.copy文件,然后会在上传成功之后删除。 |
在debug的时候发现确实生成了.copy文件,但是在SendLogRunnable 监听回来还未完成上传.copy文件就被删除,所以我想咨询下.copy文件是在什么时机删除,是怎么评判上传成功呢? |
哦不对,是上传之后就删除了,不会管是否成功,我刚又看了一下逻辑,不好意思。。 |
你遇到的问题是上传文件没有了导致上传失败吗? |
是,文件还没上传.copy文件就已经删除,所以会出现文件找不到。 |
这块儿逻辑我改一下吧,可能会有隐患,我就不去自动删除了,让开发者自己删除吧,我提供一个方法出来 |
好的,非常感谢 |
你的sendLog方法是怎么实现的?我这边试了很多次都没出现你这个情况…… |
String d = dataFormat.format(new Date(System.currentTimeMillis()));
|
呃呃,我在使用Logan-Android的时候偶尔也会出现上传不成功的情况 |
已经解决 |
怎么解决的? @lingyanluoxue |
解决方案还是需要上传成功以后再删除,我看了源码,是发送以后就删除的,发送以后获取到预处理的file,进行网络上传是开启一个子线程,这样的话就会导致出现已经删除,但是还没上传。所以我建议还是应该把删除单独剔出来,让开发者在上传以后自行处理 |
那你是改了源码还是在外部包装处理的? |
在外部包装处理的 |
外部包装怎么处理的?方便看看代码么 |
我理解错了,没有进行外部包装,log.s()会把预处理的file返回,我会重新保存一份.copy文件,上传以后再做处理 |
明白了,这块儿我思考一下怎么改 |
好的,建议对file的删除处理交给开发者进行操作 |
我觉得可以把上传这块逻辑做简单一些,源码中主要是flush和copy两个操作,而且好像这个方法只是获取当前日期的日志文件, 并且源码中还搞了一个ExecutorService, 从性能上我根本不需要源码中这个线程池去做上传。 感觉可以把send操作简化成一个flush操作,ExecutorService也可以去掉, 并回调List 所有文件。关于回调里面的上传提醒开发者必须用异步,避免阻塞写log线程队列。这个回调回来让开发者去copy 和 delete文件,上传的操作写在example里面开发者应该都可以明白。 |
这样的话逻辑暴露太多,在使用上就会产生各种意想不到的效果了,这块我最近改一改先 |
@Caij 这个上传操作和其他的Action有关联关系,所以不好直接全部让外部开发者去操作,操作不当会出问题,对外暴露的越简单越好,这个单线程就算不写在这里,真正开发者上传的时候还是要用的。 |
@Richard-Cao 暴露文件有可能开发者把源文件误删除这个问题,我也考虑过。 |
@Caij 其实还是暴露一个方法让开发者上传完文件之后调一下,是今天的就删除copy,不是就不操作,就好了 |
总觉得里面写了一个上传ExecutorService有点浪费这个线程池。 |
一个单线程池,这里不写外面开发者上传的时候还得写,起码得写个线程,而且多次上传网络又不是很好的情况下,单线程池就比较好用了 |
因为外部上传文件基本是异步, 有自己配置的线程池复用, 用不上这个线程池, 有点浪费, 而且这个是在实例化LoganThread的时候就创建了,如果你们权衡需要有线程池的话可以在触发上传操作再实例化这个线程池吧。 但是不用这个线程池又可能开发者不用异步,导致写log阻塞。 |
哦我明白你的意思了,延迟初始化也行,在上传的时候再初始化。 |
@lingyanluoxue 按照demo的方式,sendLog里是一个同步请求,所以每次都可以获取到结果,删除文件。如果sendLog里执行的是异步方法,就不行了。 |
对,是这样的,所以会出现还未上传就已经删除的情况 |
各位可以看看这个PR #67 |
Android已更新到1.2.1 |
记录日志以后上传,debug显示上传的是一个.copy文件,但是在相应的目录找不到.copy文件
The text was updated successfully, but these errors were encountered: