2
0
mirror of https://expo.survex.com/repositories/troggle/.git synced 2026-04-01 12:41:36 +01:00

Now set up full Django logging for 404

This commit is contained in:
2026-02-13 16:41:27 +00:00
parent 4d5b21dfce
commit 3c40720a95
2 changed files with 80 additions and 2 deletions

View File

@@ -1,5 +1,7 @@
import logging
import sys
from datetime import date
from pathlib import Path
from socket import gethostname
"""
@@ -76,6 +78,76 @@ USE_L10N = True
FIX_PERMISSIONS = []
### LOGGING set up here --------------------
class RequireDevServerTrue(logging.Filter):
"""Filter that only allows records through if DEVSERVER is True."""
def filter(self, record):
return DEVSERVER
PRIMARY_LOG_DIR = Path("/var/log/troggle")
FALLBACK_LOG_DIR = Path(__file__).parent / "BACKUP_LOGGING"
log_filename = "troggle.log"
try:
PRIMARY_LOG_DIR.mkdir(parents=True, exist_ok=True)
final_log_path = PRIMARY_LOG_DIR / log_filename
except (PermissionError, OSError):
FALLBACK_LOG_DIR.mkdir(parents=True, exist_ok=True)
final_log_path = FALLBACK_LOG_DIR / log_filename
print(f"!! Log permission denied at /var/log. Falling back to: {final_log_path}")
LOGGING = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"timestamped": {
"format": "{asctime} {message}",
# "format": "{levelname} {asctime} {module} {message}",
# "format": "{levelname} [{module}:{lineno}] {message}" # for bug reporting
"style": "{",
"datefmt": "%Y-%m-%d %H:%M:%S", # No milliseconds
},
"simple": {
"format": "{levelname} {asctime} [{module}:{lineno}] {message}",
"style": "{",
"datefmt": "%Y-%m-%d %H:%M:%S", # No milliseconds
},
},
"filters": {
"require_devserver_true": {
# Use the full import path to your class
# If this is in settings.py, you can use 'settings.RequireDevServerTrue'
"()": "settings.RequireDevServerTrue",
},
},
"handlers": {
"file": {
"level": "WARNING",
"class": "logging.handlers.RotatingFileHandler",
"filename": final_log_path,
"maxBytes": 1024 * 1024 * 5,
"backupCount": 5,
"formatter": "timestamped",
},
"console": {
"level": "INFO",
"filters": ["require_devserver_true"], # Applied here!
"class": "logging.StreamHandler",
"formatter": "simple",
},
},
"loggers": {
"troggle": {
"handlers": ["file", "console"],
"level": "INFO",
"propagate": True,
},
},
}
### LOGGING set up end --------------------
# top-level survex file basename (without .svx)
# SURVEX_TOPNAME = "1623-and-1626-no-schoenberg-hs"
SURVEX_TOPNAME = "troggle_import_root" # same, but without all the 'essentials' gubbins