Python-Logstash 在 Pyramid 应用程序中发送了太多条目
Python-Logstash sending too many entries in Pyramid application
使用Logstash记录日志,也记录用户什么时候做了什么。不幸的是,它似乎每个 'action' 或错误发送多个条目,而不是每个操作或错误发送一个条目。例如,如果用户提交了一个表单,我将其设置为记录他们已经提交。有时它会为此记录 1 个日志条目,有时它会记录 5、3 或 2。这是难以置信的不一致。登录同一服务器的其他工具和应用程序不会这样做。这是我设置 logstash 的地方:
class LogStashExp(object):
@staticmethod
def log(exc, request, servfrom, erlevel, email):
if str(request.url).startswith('http://localhost'):
host = 'localhost'
else:
host = '*******'
prlogger = logging.getLogger(str(servfrom))
prlogger.setLevel(logging.INFO)
prlogger.addHandler(logstash.LogstashHandler(host, 6123, version=1))
extra = {
'email': email
}
if erlevel == "warn":
prlogger.warning(exc, extra=extra)
elif erlevel == "error":
prlogger.error(exc, extra=extra)
elif erlevel == "info":
prlogger.info(exc, extra=extra)
else:
prlogger.error(exc)
我用它来记录一些东西。
LogStashExp.log("message", request, servfrom='application', erlevel='info', email=email)
想法?
Python logging
具有全局状态。
prlogger = logging.getLogger(str(servfrom))
prlogger.setLevel(logging.INFO)
prlogger.addHandler(logstash.LogstashHandler(host, 6123, version=1))
第一次执行此代码时,它会创建一个记录器。第二次执行此代码时,它 returns 返回相同的记录器。并且每次执行代码时 都会将一个新的日志记录处理程序添加到现有的记录器中 。
我认为如果你想动态创建你的记录器,你应该在继续添加新的之前检查它是否有任何处理程序。
使用Logstash记录日志,也记录用户什么时候做了什么。不幸的是,它似乎每个 'action' 或错误发送多个条目,而不是每个操作或错误发送一个条目。例如,如果用户提交了一个表单,我将其设置为记录他们已经提交。有时它会为此记录 1 个日志条目,有时它会记录 5、3 或 2。这是难以置信的不一致。登录同一服务器的其他工具和应用程序不会这样做。这是我设置 logstash 的地方:
class LogStashExp(object):
@staticmethod
def log(exc, request, servfrom, erlevel, email):
if str(request.url).startswith('http://localhost'):
host = 'localhost'
else:
host = '*******'
prlogger = logging.getLogger(str(servfrom))
prlogger.setLevel(logging.INFO)
prlogger.addHandler(logstash.LogstashHandler(host, 6123, version=1))
extra = {
'email': email
}
if erlevel == "warn":
prlogger.warning(exc, extra=extra)
elif erlevel == "error":
prlogger.error(exc, extra=extra)
elif erlevel == "info":
prlogger.info(exc, extra=extra)
else:
prlogger.error(exc)
我用它来记录一些东西。
LogStashExp.log("message", request, servfrom='application', erlevel='info', email=email)
想法?
Python logging
具有全局状态。
prlogger = logging.getLogger(str(servfrom))
prlogger.setLevel(logging.INFO)
prlogger.addHandler(logstash.LogstashHandler(host, 6123, version=1))
第一次执行此代码时,它会创建一个记录器。第二次执行此代码时,它 returns 返回相同的记录器。并且每次执行代码时 都会将一个新的日志记录处理程序添加到现有的记录器中 。
我认为如果你想动态创建你的记录器,你应该在继续添加新的之前检查它是否有任何处理程序。