From 61090bf3978cec71d998aa39d7faff92eb97d27b Mon Sep 17 00:00:00 2001 From: Ross Jones Date: Tue, 20 Mar 2018 11:09:01 +0000 Subject: [PATCH] Make sure log files are rotated Currently, whilst deployed on PaaS the log files fill up until all available space is used and then the app freezes. This PR forces the app to rotate log files every 10Mb with 5 backups. This fixes #476 --- backdrop/core/log_handler.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/backdrop/core/log_handler.py b/backdrop/core/log_handler.py index d3eb8d94..d6a112c6 100644 --- a/backdrop/core/log_handler.py +++ b/backdrop/core/log_handler.py @@ -1,4 +1,5 @@ from logging import FileHandler +from logging.handlers import RotatingFileHandler from logstash_formatter import LogstashFormatter import logging from flask import request @@ -18,7 +19,7 @@ def filter(self, record): def get_log_file_handler(path, log_level=logging.DEBUG): - handler = FileHandler(path) + handler = RotatingFileHandler(path, maxBytes=1024*1024*10, backupCount=5) handler.setFormatter(logging.Formatter( "%(asctime)s [%(levelname)s] -> %(message)s")) handler.setLevel(log_level) @@ -26,7 +27,7 @@ def get_log_file_handler(path, log_level=logging.DEBUG): def get_json_log_handler(path, app_name): - handler = FileHandler(path) + handler = RotatingFileHandler(path, maxBytes=1024*1024*10, backupCount=5) formatter = LogstashFormatter() formatter.defaults['@tags'] = ['application', app_name] handler.setFormatter(formatter) @@ -64,19 +65,21 @@ def set_up_audit_logging(app, env): def create_request_logger(app): def log_request(): - app.logger.info("request: %s - %s" % (request.method, request.url), + if request.method != "HEAD": + app.logger.info("request: %s - %s" % (request.method, request.url), extra=create_logging_extra_dict()) return log_request def create_response_logger(app): def log_response(response): - app.logger.info( - "response: %s - %s - %s" % ( - request.method, request.url, response.status - ), - extra=create_logging_extra_dict() - ) + if request.method != "HEAD": + app.logger.info( + "response: %s - %s - %s" % ( + request.method, request.url, response.status + ), + extra=create_logging_extra_dict() + ) return response return log_response