log4j日志文件搬运-py工具

4 篇文章 0 订阅
1 篇文章 0 订阅

之前有个系统,日志是用log4j,几十M分一个文件,日志越堆越多,同时,需要对登陆日志进行统计,纯粹1,2,3结尾,信息量太小,加个时间戳 会好些。 于是,决定实现一个日志搬运的小工具 。

思路

流程很简单, for一下源日志目录,把合规则的log给拿出来move 到目标log目录中,,然后用一个while 1==1 来长期运行,设置成几秒一次,

使用

配置下目标路径,

# 前缀
beginstr = 'business.tmp'
#排除的后缀
excludePostfix1 = 'log'
excludePostfix2 = 'tmp'
#目标log路径,move过去
destlogpath = '/home/abc/bak/logs/dest' # 这个为目标路径

直接放到日志 目录 里 运行。python movelog.py
之后你往这个文件夹下面copy如business.tmp.1这样的文件,就会自动被搬到目标目录,现在是定时5秒
这里写图片描述

实现代码

#!/usr/bin/python
#coding:UTF-8

import paramiko,datetime,os,logging
import os,shutil
import sys
import time

# 前缀
beginstr = 'business.tmp'
#排除的后缀
excludePostfix1 = 'log'
excludePostfix2 = 'tmp'
#目标log路径,move过去
# destlogpath = 'E:/codeplace/python/self/movelog/destfold'
destlogpath = '/home/huge/bak/logs/dest' # 这个为目标路径

srclogpath = os.getcwd() # 日志来源目录,用当前目录

def toMove(srcpath,destpath):
    now = datetime.datetime.now()
    nowstr = now.strftime('%Y%m%d%H%M%S%S')

    files = os.listdir(srcpath) 
    for fname in files:

        # 判断文件名后缀是否为log,为log/tmp则略去
        if fname.split('.')[-1] == excludePostfix1:
            continue
        if fname.split('.')[-1] == excludePostfix2:
            continue
        # 判断后缀要为数字
        if not fname.split('.')[-1].isdigit():
            continue

        # 判断文件前缀
        if not fname.startswith(beginstr):
            continue

        # 文件被其它进程处理时
        tmpfilepath = srcpath + os.sep + fname
        try:
            shutil.move(tmpfilepath,destpath+ os.sep+fname+'_'+nowstr)
        except Exception,e:
            print fname+'文件不可移动'

if __name__ == "__main__":
    while 1==1:
        # 执行搬运
        toMove(srclogpath,destlogpath)
        time.sleep(5) # 定时5s

代码是很好理解的,自己看就OK了,

说明:

log4j2 是有 filePattern的配置来 规则备份到dist目录下的,但log4j貌似没有,所以上面的功能是用于log4j文件的搬运动作.
后续可以扩展下,如目标 地址可以设置成远端,文件的过滤可以多元化

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值