python 日志排序

需求:
对于:sss.log,sss.log.1,sss.log.2,sss.log.3…sss.log.10
这种滚动的日志需要按照日志的生成的顺序进行读取的时候,需要对这些日志进行一个排序,然后依照sss.log.10…sss.log.3,sss.log.2,sss.log.1,sss.log
的顺序进行分别的读取,因为按照log4j的日志滚动规则,数字越大的,证明日志的生成时间约早。

python代码:

def get_orders_file(file_names):
    file_names.sort(key=lambda fn: int(fn[fn.index('sss.log.'):].replace('sss.log',"")) if not fn.endswith('canary.log') else 0,reverse=True)  # 按时间排序
    return file_names

file_names为文件名字的列表集合,是文件在linux中的绝对路径,类似于a/b/c/sss.log.10这种,也可以是简单的文件名字的列表集合。
基本的原理就是利用 python自己的sort函数进行list的排序,用lambda函数定义排序的规则,如果是带有数字标识的,截取出数字字符串,同时转化成数字,如果是没有数字标识的日志,类似于sss.log,就返回0,因为sss.log是最新的日志文件。

返回的列表就是排序后的结果:
sss.log.10
sss.log.9

sss.log.1
sss.log

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值