如未安装过Exceptionless, 请参考安装Exceptionless : https://mp.youkuaiyun.com/console/editor/html/107477657
出现日志丢失
- 问题源:客户端通过控制日志队列的长度保证内存占有量,当日志量太大的情况下,日志超出指定的队列长度,将会被丢弃,导致日志丢失。服务端出现宕机、网络出现问题, 可以开启本地缓存,网络连接后, 重新上传日志, 但刚连接服务端的时候,会占网络资源、磁盘IO,对应用系统会有一定的影响。
- 解决方案:如果是流量过大,修改日志队列长度一般可以解决,当服务端宕机,修改队列长度无法解决。就要修改Exceptionless 客户端代码, 将超出的日志(或是全部日志)抛送到消息队列(如RabbitMQ), 写个程序订阅队列, 将队列里的日志抛送到服务端,当服务端重试多次失败, 暂停一段时间再重试。注意: RabbitMQ应采用ACT方式, 开启持久化。通过双通道(直接和间接发送到服务端), 可以在一定程度上减少日志丢失, 毕竟RabbitMQ和服务端同时出现网络问题或宕机,丢失难于避免。后面的解决方法经测试(客户端记录条数,在Kibana中对比日志数量),在一天千万级别的情况下,未出现丢失。要注意日志重复的问题, 当并发量很高的情况下, 创建时间一样,还有RenameObject的时候, 会修改创建时间, 默认代码中会根据创建时间重新排序,所以取发送RabbitMQ的数据时,要排除