diff --git a/settings/branson.py b/settings/branson.py index 10230554f6cbe1cddfe029fd36d475c61ae18423..7e852563524fab93c464d23be510d0747749af9d 100644 --- a/settings/branson.py +++ b/settings/branson.py @@ -1,7 +1,3 @@ -# XXX I know import * is ugly, but I want the stuff from logSettings to be -# in this namespace. -from logSettings import * - CONFIG_NAME = "Branson" DEBUG = True @@ -87,3 +83,144 @@ INSTALLED_APPS = ( INTERNAL_IPS = ( '129.89.61.55', ) + + +# Settings for Logging. +import logging + +LOG_ROOT = '/home/branson/logs' +LOG_FILE_SIZE = 1024*1024 # 1 MB +LOG_FILE_BAK_CT = 3 +LOG_FORMAT = 'verbose' +LOG_LEVEL = 'DEBUG' + +# Filter objects to separate out each level of alert. +# Otherwise the log files for each level would contain the +# output for each higher level. +class debugOnlyFilter(logging.Filter): + def filter(self,record): + if record.levelname=='DEBUG': + return 1 + return 0 +class infoOnlyFilter(logging.Filter): + def filter(self,record): + if record.levelname=='INFO': + return 1 + return 0 +class debugPlusInfo(logging.Filter): + def filter(self,record): + if record.levelname=='INFO' or record.levelname=='DEBUG': + return 1 + return 0 +class warningOnlyFilter(logging.Filter): + def filter(self,record): + if record.levelname=='WARNING': + return 1 + return 0 +class errorOnlyFilter(logging.Filter): + def filter(self,record): + if record.levelname=='ERROR': + return 1 + return 0 + +# Note that mode for log files is 'a' (append) by default +# The 'level' specifier on the handle is optional, and we +# don't need it since we're using custom filters. +LOGGING = { + 'version': 1, + 'disable_existing_loggers' : True, + 'formatters': { + 'simple': { + 'format': '%(levelname)s %(message)s', + }, + 'verbose': { + 'format': '%(asctime)s: %(name)s: %(message)s', + 'datefmt': '%Y-%m-%d %H:%M:%S', + }, + }, + 'filters': { + 'debugOnly': { + '()': 'settings.logSettings.debugOnlyFilter', + }, + 'infoOnly': { + '()': 'settings.logSettings.infoOnlyFilter', + }, + 'debugPlusInfo': { + '()': 'settings.logSettings.debugPlusInfo', + }, + 'warningOnly': { + '()': 'settings.logSettings.warningOnlyFilter', + }, + 'errorOnly': { + '()': 'settings.logSettings.errorOnlyFilter', + }, + }, + 'handlers': { + 'null': { + 'level':'DEBUG', + 'class':'django.utils.log.NullHandler', + }, + 'debug_file': { + 'class': 'logging.handlers.RotatingFileHandler', + 'formatter': LOG_FORMAT, +# Commented out so that the debug file will have *everything* +# That should make it somewhat easier to read through. +# 'filters': ['debugPlusInfo'], + 'filename': '%s/gracedb_debug.log' % LOG_ROOT, + 'maxBytes': LOG_FILE_SIZE, + 'backupCount': LOG_FILE_BAK_CT, + }, +# 'info_file': { +# 'class': 'logging.handlers.RotatingFileHandler', +# 'formatter': LOG_FORMAT, +# 'filters': ['infoOnly'], +# 'filename': '%s/gracedb_info.log' % LOG_ROOT, +# 'maxBytes': LOG_FILE_SIZE, +# 'backupCount': LOG_FILE_BAK_CT, +# }, +# 'warning_file': { +# 'class': 'logging.handlers.RotatingFileHandler', +# 'formatter': LOG_FORMAT, +# 'filters': ['warningOnly'], +# 'filename': '%s/gracedb_warning.log' % LOG_ROOT, +# 'maxBytes': LOG_FILE_SIZE, +# 'backupCount': LOG_FILE_BAK_CT, +# }, +# 'error_file': { +# 'class': 'logging.handlers.RotatingFileHandler', +# 'formatter': LOG_FORMAT, +# 'filters': ['errorOnly'], +# 'filename': '%s/gracedb_error.log' % LOG_ROOT, +# 'maxBytes': LOG_FILE_SIZE, +# 'backupCount': LOG_FILE_BAK_CT, +# }, + 'performance_file': { + 'class': 'logging.FileHandler', + 'formatter': 'simple', + 'filename': '%s/gracedb_performance.log' % LOG_ROOT, + }, + }, + 'loggers': { + 'django': { + 'handlers': ['null'], + 'propagate': True, + 'level': 'INFO', + }, + 'gracedb': { +# 'handlers': ['debug_file', 'info_file', 'warning_file', 'error_file'], + 'handlers': ['debug_file'], + 'propagate': True, + 'level': LOG_LEVEL, + }, + 'middleware': { + 'handlers': ['performance_file'], + 'propagate': True, + 'level': 'INFO', + }, +# 'userprofile': { +# 'handlers': ['debug_file', 'info_file', 'warning_file', 'error_file'], +# 'propagate': True, +# 'level': LOG_LEVEL, +# }, + }, +}