一个项目从开发到完成需要的时间远远没有后期调试、修改BUG的时间长,而如何填埋我们自己挖的坑,就需要套完整健壮的日志系统。python自带的日志处理模块很不错,但是有些需求无法满足,于是决定根据从前辈实例,自己重写一个日志处理,逻辑和代码都很简单。
直接上代码:
log.py 日志文件
import os, time
import threading
log_dir = “/logdir/”
mutex = threading.Lock()
if not os.path.isdir(log_dir ):
os.system('mkdir -p %s' % log_dir )
# 定义日志函数
def send_log(level,message):
logdir = os.path.join(log_dir,level,time.strftime('%Y/%m/', ))
if not os.path.isdir(logdir):
os.system('mkdir -p %s' % logdir)
file_path = os.path.join(logdir,time.strftime('%d', ))
mutex.acquire()
f = open(file_path, 'a+')
f.write(time.asctime() + ' ' + str(message) + '
')
f.close()
if os.path.getsize(file_path) >= 10485760:
os.rename(file_path,file_path+”_”+time.strftime(“%Y%m%d%H%M%S”))
mutex.release()
下面是编辑器效果:

prodect.py项目文件
from log import send_log
try:# info日志
send_log(“info”,”用户登录成功”)
except:
pass
try:# error日志
send_log(“error”,”用户登录成功”)
except:
pass
总结
在log.py文件中,定义了日志文件夹的路径,如果发生日志,会在文件中创建如下的树形结构:
如果日志文件超过10M会将日志重新命名,之后重新生成新的日志文件,这样能保证日志不会由于太大导致的打开困难,mutex 线程锁保证日志输出。
在prodect.py文件中调用send_log函数,调用时传递两个参数,一个是日志级别,一个是日志内容,try:except保证日志系统错误不会影响正常项目访问。
日志在生成过程中会根据日志的级别进行目录归类,保证后续方便的查找日志。

找日志可以直接定位到想要去的日子,找到想要看到的日志。
谢谢大家,欢迎订阅我的头条号。
