轻松搞定日志清理,Python小白也能上手!
嘿,小伙伴们!今天咱们来聊聊一个超级实用的小技巧,用Python来清理那些让人头疼的服务器日志文件。如果你是Python新手,别担心,这篇文章会让你轻松上手,还能学到不少有趣的拓展玩法呢!
一、问题来了:日志文件“爆炸”怎么办?
如果你做过网站开发或者运行过一些服务器程序,就会发现日志文件就像“数字垃圾”一样,越堆越多。这些.log
文件记录了程序运行的各种信息,但如果它们不断膨胀,就会占用大量宝贵的磁盘空间,甚至可能让服务器崩溃!那怎么办呢?别急,Python来帮忙!
二、代码解析:Python帮你“瘦身”
先来看看这个神奇的代码片段:
log_folder = '/home/wwwlogs/'
size_limit = 50 * 1024 * 1024 # 50MB
这里定义了两个关键变量:log_folder
是日志文件存放的目录,size_limit
是文件大小的上限(这里是50MB)。简单来说,就是“别让日志文件超过50MB哦”。
接下来是核心部分:
for filename in os.listdir(log_folder):
if filename.endswith('.log'):
fullpath = os.path.join(log_folder, filename)
if os.path.getsize(fullpath) > size_limit:
print(f'{filename} exceeds size limit, deleting it')
os.remove(fullpath)
这段代码是清理日志的“小能手”。它会逐个检查日志文件夹里的文件,如果文件名以.log
结尾(说明是日志文件),并且文件大小超过我们设定的50MB,就会把它删掉。是不是很聪明?就像一个会自动清理垃圾的机器人。
最后,为了让这个清理过程持续进行,我们用了一个while True
循环,每隔5分钟(time.sleep(300)
)检查一次日志文件夹。这样,你的服务器就能一直保持清爽啦!
三、应用场景:这个代码能干啥?
这个代码非常适合用在服务器上,尤其是那些运行网站、服务器程序或者各种后台服务的地方。日志文件会不断生成,而这个脚本就像一个“清洁工”,帮你定期清理那些“胖乎乎”的日志文件,节省磁盘空间,避免服务器被日志撑爆。
四、拓展玩法:Python的“魔法”不止于此!
场景一:按日期清理日志
有时候,我们不仅想按大小清理日志,还想保留最近几天的日志文件。比如,只保留最近7天的日志,其他的都删掉。这该怎么办呢?看下面的代码:
import os
import time
from datetime import datetime, timedelta
log_folder = '/home/wwwlogs/'
days_to_keep = 7 # 保留最近7天的日志
while True:
for filename in os.listdir(log_folder):
if filename.endswith('.log'):
fullpath = os.path.join(log_folder, filename)
file_time = os.path.getctime(fullpath) # 获取文件创建时间
file_date = datetime.fromtimestamp(file_time) # 转换为日期格式
if file_date < datetime.now() - timedelta(days=days_to_keep):
print(f'{filename} is too old, deleting it')
os.remove(fullpath)
time.sleep(300)
这里我们用os.path.getctime
获取文件的创建时间,然后判断它是否比“当前时间减去7天”更早。如果是,就把它删掉。这样,你的日志文件夹就永远只保留最近7天的日志啦!
场景二:备份日志文件
有时候,我们不想直接删除日志文件,而是想把它们备份到另一个地方。比如,把超过50MB的日志文件移动到一个“备份文件夹”里。看下面的代码:
import os
import time
import shutil
log_folder = '/home/wwwlogs/'
backup_folder = '/home/wwwlogs_backup/'
size_limit = 50 * 1024 * 1024 # 50MB
while True:
for filename in os.listdir(log_folder):
if filename.endswith('.log'):
fullpath = os.path.join(log_folder, filename)
if os.path.getsize(fullpath) > size_limit:
print(f'{filename} exceeds size limit, moving it to backup')
shutil.move(fullpath, os.path.join(backup_folder, filename))
time.sleep(300)
这里我们用shutil.move
把文件从日志文件夹移动到备份文件夹。这样,既清理了原文件夹,又保留了日志文件,一举两得!
五、总结:Python的“小魔法”,让生活更轻松!
今天咱们学会了用Python清理日志文件,还拓展了两个更实用的场景。是不是觉得Python很厉害?其实,Python的“魔法”还有很多,只要我们用心去探索,就能用它解决各种问题。如果你是Python小白,希望这篇文章能让你迈出第一步;如果你已经是大神,也欢迎分享更多好玩的Python技巧哦!
完整代码
# -*- coding: utf-8 -*-
# @Time : 2023/11/7 14:44
# @Author : Kyln.Wu
# @Email : kylnwu@qq.com
# @File : 文件大小监控.py
# @Software: PyCharm
import os
import time
log_folder = '/home/wwwlogs/'
size_limit = 50 * 1024 * 1024 # 50MB
while True:
for filename in os.listdir(log_folder):
if filename.endswith('.log'):
fullpath = os.path.join(log_folder, filename)
if os.path.getsize(fullpath) > size_limit:
print(f'{filename} exceeds size limit, deleting it')
os.remove(fullpath)
time.sleep(300)