General Logging

some extra logging around problem areas
This commit is contained in:
Aaron Kimbre
2022-02-11 20:31:57 -06:00
parent 87384c1b98
commit 8aec4a45d2
4 changed files with 144 additions and 98 deletions

View File

@@ -1,5 +1,5 @@
import os
from flask import Flask, url_for, g, redirect
from flask import Flask, url_for, g, redirect, render_template
from functools import wraps
from flask_assets import Environment
from webassets import Bundle
@@ -7,7 +7,7 @@ import time
from app.models import db, migrate, PlayKey
from app.schemas import ma
from app.forms import CustomUserManager
from flask_user import user_registered, current_user
from flask_user import user_registered, current_user, user_logged_in
from flask_wtf.csrf import CSRFProtect
from flask_apscheduler import APScheduler
from app.luclient import query_cdclient, register_luclient_jinja_helpers
@@ -15,6 +15,11 @@ from app.luclient import query_cdclient, register_luclient_jinja_helpers
from app.commands import init_db, init_accounts, load_property, gen_image_cache, gen_model_cache
from app.models import Account, AccountInvitation
import logging
from logging.handlers import RotatingFileHandler
from werkzeug.exceptions import HTTPException
# Instantiate Flask extensions
csrf_protect = CSRFProtect()
scheduler = APScheduler()
@@ -22,7 +27,6 @@ scheduler = APScheduler()
def create_app():
app = Flask(__name__, instance_relative_config=True)
# decrement uses on a play key after a successful registration
@@ -33,8 +37,19 @@ def create_app():
play_key_used = PlayKey.query.filter(PlayKey.id == user.play_key_id).first()
play_key_used.key_uses = play_key_used.key_uses - 1
play_key_used.times_used = play_key_used.times_used + 1
app.logger.info(
f"USERS::REGISTRATION User with ID {user.id} and name {user.username} Registered \
using Play Key ID {play_key_used.id} : {play_key_used.key_string}"
)
db.session.add(play_key_used)
db.session.commit()
else:
app.logger.info(f"USERS::REGISTRATION User with ID {user.id} and name {user.username} Registered")
@user_logged_in.connect_via(app)
def _after_login_hook(sender, user, **extra):
app.logger.info(f"{user.username} Logged in")
# A bunch of jinja filters to make things easiers
@app.template_filter('ctime')
@@ -51,15 +66,24 @@ def create_app():
else:
return 0 & (1 << bit)
@app.template_filter('debug')
def debug(text):
print(text)
@app.teardown_appcontext
def close_connection(exception):
cdclient = getattr(g, '_cdclient', None)
if cdclient is not None:
cdclient.close()
@app.template_filter('debug')
def debug(text):
print(text)
@app.errorhandler(Exception)
def handle_exception(e):
app.logger.error(e)
# pass through HTTP errors
if isinstance(e, HTTPException):
return e
# now you're handling non-HTTP exceptions only
return render_template("status_codes/500.html.j2", exception=e), 500
# add the commands to flask cli
app.cli.add_command(init_db)
@@ -68,6 +92,7 @@ def create_app():
app.cli.add_command(gen_image_cache)
app.cli.add_command(gen_model_cache)
register_logging(app)
register_settings(app)
register_extensions(app)
register_blueprints(app)
@@ -132,6 +157,14 @@ def register_blueprints(app):
app.register_blueprint(reports_blueprint, url_prefix='/reports')
def register_logging(app):
# file logger
file_handler = RotatingFileHandler('nexus_dashboard.log', maxBytes=1024 * 1024 * 100, backupCount=20)
file_handler.setLevel(logging.INFO)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
file_handler.setFormatter(formatter)
app.logger.addHandler(file_handler)
def register_settings(app):
"""Register setting from setting and env