代码拉取完成,页面将自动刷新
同步操作将从 德州深之海网络技术有限公司/ModuleBackend 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
# -*- 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()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。