From f8607c3d5c21fe523aa1e1f421300c5b606147ce Mon Sep 17 00:00:00 2001 From: Kevin Chung Date: Sat, 19 Jan 2019 13:43:29 -0500 Subject: [PATCH] Call init_logs() function to add logging handlers. Move init_logs() into initialization vs logging. (#841) * Closes #835 * Move `utils.logging.init_logs()` into `utils.initialization` --- CTFd/__init__.py | 3 +- CTFd/utils/initialization/__init__.py | 44 +++++++++++++++++++++++++++ CTFd/utils/logging/__init__.py | 43 -------------------------- 3 files changed, 46 insertions(+), 44 deletions(-) diff --git a/CTFd/__init__.py b/CTFd/__init__.py index e6be9c4a..38e019ba 100644 --- a/CTFd/__init__.py +++ b/CTFd/__init__.py @@ -13,7 +13,7 @@ from CTFd import utils from CTFd.utils.migrations import migrations, migrate, upgrade, stamp, create_database from CTFd.utils.sessions import CachingSessionInterface from CTFd.utils.updates import update_check -from CTFd.utils.initialization import init_request_processors, init_template_filters, init_template_globals +from CTFd.utils.initialization import init_request_processors, init_template_filters, init_template_globals, init_logs from CTFd.utils.events import socketio from CTFd.plugins import init_plugins @@ -206,6 +206,7 @@ def create_app(config='CTFd.config.Config'): app.register_error_handler(500, general_error) app.register_error_handler(502, gateway_error) + init_logs(app) init_plugins(app) return app diff --git a/CTFd/utils/initialization/__init__.py b/CTFd/utils/initialization/__init__.py index 240ad754..46ede215 100644 --- a/CTFd/utils/initialization/__init__.py +++ b/CTFd/utils/initialization/__init__.py @@ -33,6 +33,8 @@ from CTFd.utils.config.visibility import ( from sqlalchemy.exc import InvalidRequestError, IntegrityError import datetime +import logging +import os def init_template_filters(app): @@ -64,6 +66,48 @@ def init_template_globals(app): app.jinja_env.globals.update(scores_visible=scores_visible) +def init_logs(app): + logger_submissions = logging.getLogger('submissions') + logger_logins = logging.getLogger('logins') + logger_registrations = logging.getLogger('registrations') + + logger_submissions.setLevel(logging.INFO) + logger_logins.setLevel(logging.INFO) + logger_registrations.setLevel(logging.INFO) + + log_dir = app.config['LOG_FOLDER'] + if not os.path.exists(log_dir): + os.makedirs(log_dir) + + logs = { + 'submissions': os.path.join(log_dir, 'submissions.log'), + 'logins': os.path.join(log_dir, 'logins.log'), + 'registrations': os.path.join(log_dir, 'registrations.log') + } + + for log in logs.values(): + if not os.path.exists(log): + open(log, 'a').close() + + submission_log = logging.handlers.RotatingFileHandler(logs['submissions'], maxBytes=10000) + login_log = logging.handlers.RotatingFileHandler(logs['logins'], maxBytes=10000) + registration_log = logging.handlers.RotatingFileHandler(logs['registrations'], maxBytes=10000) + + logger_submissions.addHandler( + submission_log + ) + logger_logins.addHandler( + login_log + ) + logger_registrations.addHandler( + registration_log + ) + + logger_submissions.propagate = 0 + logger_logins.propagate = 0 + logger_registrations.propagate = 0 + + def init_request_processors(app): @app.context_processor def inject_user(): diff --git a/CTFd/utils/logging/__init__.py b/CTFd/utils/logging/__init__.py index 2845f624..3b0b46ce 100644 --- a/CTFd/utils/logging/__init__.py +++ b/CTFd/utils/logging/__init__.py @@ -2,52 +2,9 @@ from flask import session from CTFd.utils.user import get_ip import logging import logging.handlers -import os import time -def init_logs(app): - logger_submissions = logging.getLogger('submissions') - logger_logins = logging.getLogger('logins') - logger_registrations = logging.getLogger('registrations') - - logger_submissions.setLevel(logging.INFO) - logger_logins.setLevel(logging.INFO) - logger_registrations.setLevel(logging.INFO) - - log_dir = app.config['LOG_FOLDER'] - if not os.path.exists(log_dir): - os.makedirs(log_dir) - - logs = { - 'submissions': os.path.join(log_dir, 'submissions.log'), - 'logins': os.path.join(log_dir, 'logins.log'), - 'registrations': os.path.join(log_dir, 'registrations.log') - } - - for log in logs.values(): - if not os.path.exists(log): - open(log, 'a').close() - - submission_log = logging.handlers.RotatingFileHandler(logs['submissions'], maxBytes=10000) - login_log = logging.handlers.RotatingFileHandler(logs['logins'], maxBytes=10000) - registration_log = logging.handlers.RotatingFileHandler(logs['registrations'], maxBytes=10000) - - logger_submissions.addHandler( - submission_log - ) - logger_logins.addHandler( - login_log - ) - logger_registrations.addHandler( - registration_log - ) - - logger_submissions.propagate = 0 - logger_logins.propagate = 0 - logger_registrations.propagate = 0 - - def log(logger, format, **kwargs): logger = logging.getLogger(logger) props = {