diff --git a/.gitignore b/.gitignore index f262b358..201ad60b 100644 --- a/.gitignore +++ b/.gitignore @@ -20,4 +20,4 @@ package.json feature_flags.json coverage_*.json *-coverage.xml - +log/ diff --git a/Release-Notes.md b/Release-Notes.md index 51589fba..88c08fd9 100644 --- a/Release-Notes.md +++ b/Release-Notes.md @@ -1,3 +1,22 @@ +## Version 1.17.0 + +- Added setting for log files. + + Enables user to specify a default path for centurion's logging. Add the following to your settings file `/etc/itsm/settings.py` + + ``` py + LOG_FILES = { + "centurion": "/var/log/centurion.log", # Normal Centurion Operations + "weblog": "/var/log/weblog.log", # All web requests made to Centurion + "rest_api": "/var/log/rest_api.log", # Rest API + "catch_all":"/var/log/catch-all.log" # A catch all log. Note: does not log anything that has already been logged. + } + + ``` + + With this new setting, the previous setting `LOGGING` will no longer function. + + ## Version 1.16.0 - Employees model added behind feature flag `2025-00002` and will remain behind this flag until production ready. diff --git a/app/app/settings.py b/app/app/settings.py index 43a866ce..6da519f3 100644 --- a/app/app/settings.py +++ b/app/app/settings.py @@ -80,6 +80,95 @@ FEATURE_FLAG_OVERRIDES = None # Feature Flags to override fetched feature flags # PROMETHEUS_METRICS_EXPORT_PORT = 8010 # PROMETHEUS_METRICS_EXPORT_ADDRESS = '' + +LOG_FILES = { # defaults for devopment. docker includes settings has correct locations + "centurion": "../log/centurion.log", + "weblog": "../log/weblog.log", + "rest_api": "../log/rest_api.log", + "catch_all":"../log/catch-all.log" +} + +CENTURION_LOGGING = { + "version": 1, + "disable_existing_loggers": False, + "formatters": { + "console": { + "format": "{asctime} {levelname} {message}", + "style": "{", + }, + "verbose": { + "format": "{asctime} {levelname} {name} {module} {process:d} {thread:d} {message}", + "style": "{", + }, + "simple": { + "format": "{levelname} {message}", + "style": "{", + }, + "web_log": { + "format": "{asctime} {levelname} {name} {module} {process:d} {thread:d} {message}", + "style": "{", + }, + }, + "handlers": { + 'console': { + 'level': 'INFO', + 'class': 'logging.StreamHandler', + 'formatter': 'console', + }, + "file_centurion": { + "level": "INFO", + "class": "logging.FileHandler", + "filename": "centurion.log", + 'formatter': 'verbose', + }, + "file_weblog": { + "level": "INFO", + "class": "logging.FileHandler", + "filename": "weblog.log", + 'formatter': 'web_log', + }, + "file_rest_api": { + "level": "INFO", + "class": "logging.FileHandler", + "filename": "rest_api.log", + 'formatter': 'verbose', + }, + "file_catch_all": { + "level": "INFO", + "class": "logging.FileHandler", + "filename": "catch-all.log", + 'formatter': 'verbose', + } + }, + "loggers": { + "centurion": { + "handlers": ['console', 'file_centurion'], + "level": "INFO", + "propagate": False, + }, + "django.server": { + "handlers": ["file_weblog", 'console'], + "level": "INFO", + "propagate": False, + }, + "django": { + "handlers": ['console', 'file_catch_all'], + "level": "INFO", + "propagate": False, + }, + 'rest_framework': { + 'handlers': ['file_rest_api', 'console'], + 'level': 'INFO', + 'propagate': False, + }, + '': { + 'handlers': ['file_catch_all'], + 'level': 'INFO', + 'propagate': True, + }, + }, + } + METRICS_ENABLED = False # Enable Metrics METRICS_EXPORT_PORT = 8080 # Port to serve metrics on METRICS_MULTIPROC_DIR = '/tmp/prometheus' # path the metrics from multiple-process' save to @@ -393,7 +482,22 @@ CSRF_TRUSTED_ORIGINS = [ *TRUSTED_ORIGINS ] + +# Add the user specified log files +CENTURION_LOGGING['handlers']['file_centurion']['filename'] = LOG_FILES['centurion'] +CENTURION_LOGGING['handlers']['file_weblog']['filename'] = LOG_FILES['weblog'] +CENTURION_LOGGING['handlers']['file_rest_api']['filename'] = LOG_FILES['rest_api'] +CENTURION_LOGGING['handlers']['file_catch_all']['filename'] = LOG_FILES['catch_all'] + + +if str(CENTURION_LOGGING['handlers']['file_centurion']['filename']).startswith('../log'): + + if not os.path.exists('../log'): # Create log dir + + os.makedirs('../log') + if DEBUG: + INSTALLED_APPS += [ 'debug_toolbar', ] @@ -407,6 +511,10 @@ if DEBUG: ] +# Setup Logging +LOGGING = CENTURION_LOGGING + + if METRICS_ENABLED: INSTALLED_APPS += [ 'django_prometheus', ] diff --git a/includes/etc/itsm/settings.py b/includes/etc/itsm/settings.py index e209b5e9..51abbb59 100644 --- a/includes/etc/itsm/settings.py +++ b/includes/etc/itsm/settings.py @@ -33,6 +33,15 @@ FEATURE_FLAGGING_ENABLED = True # Turn Feature Flagging on/off FEATURE_FLAG_OVERRIDES = [] # Feature Flag Overrides. Takes preceedence over downloaded feature flags. + +LOG_FILES = { # Location where log files will be created + "centurion": "/var/log/centurion.log", + "weblog": "/var/log/weblog.log", + "rest_api": "/var/log/rest_api.log", + "catch_all":"/var/log/catch-all.log" +} + + SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https") SECURE_SSL_REDIRECT = True