1 Star 0 Fork 22

c2c_nezha/DeepinOceanCms

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
SailfishMQLogger.py 2.94 KB
一键复制 编辑 原始数据 按行查看 历史
root 提交于 2020-04-09 18:49 +08:00 . init role report flow id
# -*- coding: utf-8 -*-
'''
作者:姜夏
日期:2020-02-28
Email:315010397@qq.com
'''
import tornado
from tornado.options import define, options
import pika
import sys
import time
import os
import shutil
__version__ = '0.0.1'
__doc__ = 'RabbitMQ的日志处理工具!'
# 日志目录
logFilePath = '/data/www/logs/'
# 日志最大字节,单位M
logMaxSize = 5
MQ_HOST = "localhost"
MQ_QUEUE = "sailfish-backend-mqlog"
parameters = pika.ConnectionParameters(MQ_HOST)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
channel.queue_declare(MQ_QUEUE)
class LogRecord( object ):
def __init__( self , proName , level , logDate , body , requestFileName = '' , requestFnName = '' , requestFnLineNo = 0 ):
self.proName = proName
self.level = level
self.body = body
self.logDate = logDate
self.requestFileName = requestFileName
self.requestFnName = requestFnName
self.requestFnLineNo = requestFnLineNo
def __str__(self):
return '<LogRecord:[%s:%s:%s][%s][%s][%s]:"%s">' % ( self.requestFileName , self.requestFnName , self.requestFnLineNo , self.proName , self.level , self.logDate , self.body )
__repr__ = __str__
def writeLog2File( logStr ):
timestamp = int(time.time())
logFileName = "%ssailfish-%s.log" % (logFilePath, time.strftime("%Y%m%d", time.localtime(timestamp)))
if os.path.isfile( logFileName ) == True:
logSize = os.path.getsize( logFileName )
logMaxSizeB = 1024 * 1024 * logMaxSize
if logSize >= logMaxSizeB:
_logFileName = "%ssailfish-%s.log" % (logFilePath, time.strftime("%Y%m%d-%H%M%S", time.localtime(timestamp)))
shutil.move( logFileName , _logFileName )
f = open( logFileName , 'a' , encoding='utf8')
f.write( logStr + "\n" )
f.close()
return True
def _buildLogMsg(params):
if 'request_file_name' not in params:
params['request_file_name'] = ''
if 'request_fn_name' not in params:
params['request_fn_name'] = ''
if 'request_fn_line_no' not in params:
params['request_fn_line_no'] = 0
logStr = LogRecord( params['pro_name'], params['level'], params['log_date'], params['body'] , params['request_file_name'] , params['request_fn_name'] , params['request_fn_line_no'] ).__str__()
return logStr
def assignQueueByCate(logs):
logStr = "========START========="
writeLog2File( logStr )
for item in logs:
logStr = _buildLogMsg(item)
writeLog2File( logStr )
logStr = "========OVER=========\n\n"
writeLog2File( logStr )
return True
def callback(ch, method, properties, body):
# print( body )
bodyJson = tornado.escape.json_decode(body)
assignQueueByCate(bodyJson['msgs'])
ch.basic_ack(delivery_tag=method.delivery_tag)
if __name__ == "__main__":
channel.basic_consume(MQ_QUEUE, callback)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/c2c_nezha/DeepinOceanCms.git
git@gitee.com:c2c_nezha/DeepinOceanCms.git
c2c_nezha
DeepinOceanCms
DeepinOceanCms
master

搜索帮助