python - python wsgi日志记录到远程服务器被多次发送
问题描述
在 apache/wsgi 应用程序中,我试图将我的应用程序所做的事情记录到远程 rsyslog 守护程序。但我不知道为什么,我要记录的日志在我的日志文件中记录了多次。当我调用测试 url 时,我有一个新的日志行,第二次我有两个新行(在第一行之上),依此类推......我不知道为什么也不知道。会知道什么可能导致这种行为?
谢谢
import logging, socket, os, json, requests, sys
from logging.handlers import SysLogHandler
def application(environ, start_response):
status = '200 OK'
html_output = 'App test\n'
logger = logging.getLogger('test app')
logger.setLevel(logging.INFO)
handler = logging.handlers.SysLogHandler('/dev/log')
formatter = logging.Formatter('Python: { "loggerName":"%(name)s", "timestamp":"%(asctime)s", "pathName":"%(pathname)s", "logRecordCreationTime":"%(created)f", "functionName":"%(funcName)s", "levelNo":"%(levelno)s", "lineNo":"%(lineno)d", "time":"%(msecs)d", "levelName":"%(levelname)s", "message":"%(message)s"}')
handler.formatter = formatter
logger.addHandler(handler)
logger.info('need to sync true')
response_headers = [('Content-type', 'text/html'), ('Content-Length', str(len(html_output)))]
start_response(status, response_headers)
return [bytes(html_output, 'utf-8')]
以下是 /var/log/messages 中的一些日志行,您可以在其中多次看到相同的行:
Mar 27 14:42:53 db-test Python[20249]: { "loggerName":"test app", "timestamp":"2020-03-27 13:42:53,687", "pathName":"/home/prebid-server/serverside-mediasquare/python/test.wsgi", "logRecordCreationTime":"1585316573.687927", "functionName":"application", "levelNo":"20", "lineNo":"18", "time":"687", "levelName":"INFO", "message":"need to sync true"}
Mar 27 14:42:53 db-test Python[20249]: { "loggerName":"test app", "timestamp":"2020-03-27 13:42:53,687", "pathName":"/home/prebid-server/serverside-mediasquare/python/test.wsgi", "logRecordCreationTime":"1585316573.687927", "functionName":"application", "levelNo":"20", "lineNo":"18", "time":"687", "levelName":"INFO", "message":"need to sync true"}
Mar 27 14:42:56 db-test Python[20249]: { "loggerName":"test app", "timestamp":"2020-03-27 13:42:56,194", "pathName":"/home/prebid-server/serverside-mediasquare/python/test.wsgi", "logRecordCreationTime":"1585316576.194655", "functionName":"application", "levelNo":"20", "lineNo":"18", "time":"194", "levelName":"INFO", "message":"need to sync true"}
Mar 27 14:42:56 db-test Python[20249]: { "loggerName":"test app", "timestamp":"2020-03-27 13:42:56,194", "pathName":"/home/prebid-server/serverside-mediasquare/python/test.wsgi", "logRecordCreationTime":"1585316576.194655", "functionName":"application", "levelNo":"20", "lineNo":"18", "time":"194", "levelName":"INFO", "message":"need to sync true"}
Mar 27 14:42:56 db-test Python[20249]: { "loggerName":"test app", "timestamp":"2020-03-27 13:42:56,194", "pathName":"/home/prebid-server/serverside-mediasquare/python/test.wsgi", "logRecordCreationTime":"1585316576.194655", "functionName":"application", "levelNo":"20", "lineNo":"18", "time":"194", "levelName":"INFO", "message":"need to sync true"}
Mar 27 14:42:57 db-test Python[20249]: { "loggerName":"test app", "timestamp":"2020-03-27 13:42:57,700", "pathName":"/home/prebid-server/serverside-mediasquare/python/test.wsgi", "logRecordCreationTime":"1585316577.700038", "functionName":"application", "levelNo":"20", "lineNo":"18", "time":"700", "levelName":"INFO", "message":"need to sync true"}
Mar 27 14:42:57 db-test Python[20249]: { "loggerName":"test app", "timestamp":"2020-03-27 13:42:57,700", "pathName":"/home/prebid-server/serverside-mediasquare/python/test.wsgi", "logRecordCreationTime":"1585316577.700038", "functionName":"application", "levelNo":"20", "lineNo":"18", "time":"700", "levelName":"INFO", "message":"need to sync true"}
Mar 27 14:42:57 db-test Python[20249]: { "loggerName":"test app", "timestamp":"2020-03-27 13:42:57,700", "pathName":"/home/prebid-server/serverside-mediasquare/python/test.wsgi", "logRecordCreationTime":"1585316577.700038", "functionName":"application", "levelNo":"20", "lineNo":"18", "time":"700", "levelName":"INFO", "message":"need to sync true"}
Mar 27 14:42:57 db-test Python[20249]: { "loggerName":"test app", "timestamp":"2020-03-27 13:42:57,700", "pathName":"/home/prebid-server/serverside-mediasquare/python/test.wsgi", "logRecordCreationTime":"1585316577.700038", "functionName":"application", "levelNo":"20", "lineNo":"18", "time":"700", "levelName":"INFO", "message":"need to sync true"}
解决方案
推荐阅读
- symfony - 如何获得图像取决于一对多关系中的文章?
- react-native - null 不是在本机反应中评估 this.state.touppercase() 的对象吗?
- node.js - 如何将表单中的电子邮件和密码值与数据库中的值进行比较,并在找到匹配项时重定向到配置文件页面(MongoDB、Node.js)
- php - 如何在 gd 中获取支持的图像格式列表?
- vba - VBA IE自动化-在网页上单击按钮时元素的变量丢失参考
- asterisk - 如何在 Asterisk ARI 中获取有关来电的信息
- .net - SqlException: Execution Timeout Expired while调用sql查询并将结果添加到列表中
- python - Firestore - Python 仅从具有“array_contains”的数组字段中获取值
- react-redux - React 路由器 v6 在刷新时崩溃
- ios - Swift 线程问题