nginx、tomcat、php日志轮转程序
2018-02-27 14:13
295 查看
nginx、tomcat、php日志轮转程序
为了按分类自定义轮转的文件,所以写了如下代码:#!/usr/bin/env python # -*- coding:utf-8 -*- # __author__ = 'xiaojinsong' # __time__ = '2018/2/26' import os, sys, time, datetime import tarfile, re yesday = datetime.datetime.now() - datetime.timedelta(days=1) logday = yesday.strftime('%Y-%m-%d') def nginx_rotate(logdir): backdir = os.path.join('/apps/logs/backup/', sys.argv[1], logday) if not os.path.isdir(backdir): os.makedirs(backdir) for root, dir, files in os.walk(logdir): dir[:] = [] os.chdir(root) for file in files: if re.search(r'.*\.log$', file) and os.path.getsize(file) > 0: try: t = tarfile.open(os.path.join(backdir, file + 'tar.gz'), 'w:gz') t.add(file) t.close() except Exception as e: print(e) finally: os.remove(file) def tomcat_rotate(logdir): backdir = os.path.join('/apps/logs/backup/', sys.argv[1], logday) if not os.path.isdir(backdir): os.makedirs(backdir) for root, dirs, files in os.walk(logdir): # print(root,dirs,files) for dir in dirs: if dir == 'logs': tempdir = os.path.join(root, dir) for rootson, dirson, fileson in os.walk(tempdir): for file in fileson: filedir = os.path.join(rootson, file) # print(filedir) obj = re.match(r'/apps/svr/server/(.+)/logs/.+\d+(.*)\.(log|txt)$', filedir, re.I) if obj: # print(obj.group(0)) dst_dir = os.path.join(backdir, obj.group(1)) if not os.path.isdir(dst_dir): os.makedirs(dst_dir) if os.path.getsize(filedir) > 0: os.chdir(os.path.dirname(filedir)) try: t = tarfile.open(os.path.join(dst_dir, file + 'tar.gz'), 'w:gz') t.add(file) t.close() except Exception as e: print(e) finally: os.remove(file) # 只支持日志目录只有一层子目录,暂不支持多目录 def php_rotate(logdir): backdir = os.path.join('/apps/logs/backup/', sys.argv[1], logday) if not os.path.isdir(backdir): os.makedirs(backdir) filelist = [] for root, dirs, files in os.walk(logdir): # print(root, dirs, files) if dirs: for file in os.listdir(root): tempfile = os.path.join(root, file) if os.path.isfile(tem 4000 pfile) and os.path.getsize(tempfile) > 0: os.chdir(os.path.dirname(tempfile)) try: t = tarfile.open(os.path.join(backdir, file + 'tar.gz'), 'w:gz') t.add(file) t.close() except Exception as e: print(e) finally: os.remove(file) for dir1 in dirs: tempdir = os.path.join(root, dir1) dst_dir = os.path.join(backdir, dir1) # print(dst_dir) if not os.path.isdir(dst_dir): os.makedirs(dst_dir) for file in os.listdir(tempdir): filedir = os.path.join(tempdir, file) os.chdir(os.path.dirname(filedir)) try: t = tarfile.open(os.path.join(dst_dir, file + 'tar.gz'), 'w:gz') t.add(file) t.close() except Exception as e: print(e) finally: os.remove(file) def main(): if sys.argv[1] == 'nginx': nginx_rotate('/apps/logs/nginx') try: os.system('kill -USR1 `cat /apps/logs/nginx/nginx.pid`') except Exception as e: print(e) elif sys.argv[1] == 'tomcat': tomcat_rotate('/apps/svr/server/') elif sys.argv[1] == 'php': php_rotate('/apps/logs/php') else: print('This program must at lest on parameter') if __name__ == '__main__': main()
相关文章推荐
- Nginx,PHP-FPM,Redis,Twemproxy等的日志轮转
- Zabbix监控Memcached PHP-FPM Tomcat Nginx MySQL 网站日志
- 切割日志(mysql,nginx,php tomcat)使用logrotate
- Zabbix监控Memcached PHP-FPM Tomcat Nginx MySQL 网站日志
- linux中nginx下禁止某目录执行php程序
- 在CentOS 7 64位操作系统环境下搭建LNMP(Linux+Nginx+MySQL+PHP)来运行Zabbix监控程序
- 如何针对已经安装好的Apache/PHP/Mysql/Nginx程序查看他们的编译参数
- Nginx、tomcat访问日志准实时分析统计--goaccess
- Nginx+jdk+mysql+tomcat+php
- nginx+tomcat+php(tomcat的session共享设置)
- 【夯实PHP基础】nginx php-fpm 输出php错误日志
- nginx php-fpm 输出php错误日志
- nginx 隐藏index.php 并开启rewrite日志调试(apache也有)
- nginx,php日志分割
- nginx php-fpm中启用慢日志配置(用于检测执行较慢的PHP脚本)
- Linux\CentOS系统下的服务器搭建,下载编译环境,安装vsFtpd、nginx、MySQL、JDK、Tomcat、PHP
- 【nginx运维基础(7)】常用PHP开源程序的NginxRewrite示例
- 使用quercus在tomcat环境中运行php程序
- nginx 反向代理使apache或者tomcat日志中无法获取真实IP 的 X-Forwarded-For 参数的设定
- python小程序:查找nginx日志文件的ip点击率并排序