diff --git a/docs/configuration/optional-settings.md b/docs/configuration/optional-settings.md index 6c68ca386..05e60dcac 100644 --- a/docs/configuration/optional-settings.md +++ b/docs/configuration/optional-settings.md @@ -83,6 +83,34 @@ Enforcement of unique IP space can be toggled on a per-VRF basis. To enforce uni --- +## LOGGING + +By default, all messages of INFO severity or higher will be logged to the console. Additionally, if `DEBUG` is False and email access has been configured, ERROR and CRITICAL messages will be emailed to the users defined in `ADMINS`. + +The Django framework on which NetBox runs allows for the customization of logging, e.g. to write logs to file. Please consult the [Django logging documentation](https://docs.djangoproject.com/en/1.11/topics/logging/) for more information on configuring this setting. Below is an example which will write all INFO and higher messages to a file: + +``` +LOGGING = { + 'version': 1, + 'disable_existing_loggers': False, + 'handlers': { + 'file': { + 'level': 'INFO', + 'class': 'logging.FileHandler', + 'filename': '/var/log/netbox.log', + }, + }, + 'loggers': { + 'django': { + 'handlers': ['file'], + 'level': 'INFO', + }, + }, +} +``` + +--- + ## LOGIN_REQUIRED Default: False diff --git a/netbox/netbox/configuration.example.py b/netbox/netbox/configuration.example.py index bc255bac3..2e08090c7 100644 --- a/netbox/netbox/configuration.example.py +++ b/netbox/netbox/configuration.example.py @@ -58,6 +58,11 @@ CORS_ORIGIN_REGEX_WHITELIST = [ # r'^(https?://)?(\w+\.)?example\.com$', ] +# Set to True to enable server debugging. WARNING: Debugging introduces a substantial performance penalty and may reveal +# sensitive information about your installation. Only enable debugging while performing testing. Never enable debugging +# on a production system. +DEBUG = False + # Email settings EMAIL = { 'SERVER': 'localhost', @@ -72,6 +77,10 @@ EMAIL = { # (all prefixes and IP addresses not assigned to a VRF), set ENFORCE_GLOBAL_UNIQUE to True. ENFORCE_GLOBAL_UNIQUE = False +# Enable custom logging. Please see the Django documentation for detailed guidance on configuring custom logs: +# https://docs.djangoproject.com/en/1.11/topics/logging/ +LOGGING = {} + # Setting this to True will permit only authenticated users to access any part of NetBox. By default, anonymous users # are permitted to access most data in NetBox (excluding secrets) but not make any changes. LOGIN_REQUIRED = False diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index d46f4b226..5d72b9b84 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -15,7 +15,7 @@ except ImportError: VERSION = '2.0.6-dev' -# Import local configuration +# Import required configuration parameters ALLOWED_HOSTS = DATABASE = SECRET_KEY = None for setting in ['ALLOWED_HOSTS', 'DATABASE', 'SECRET_KEY']: try: @@ -25,33 +25,35 @@ for setting in ['ALLOWED_HOSTS', 'DATABASE', 'SECRET_KEY']: "Mandatory setting {} is missing from configuration.py.".format(setting) ) -# Default configurations +# Import optional configuration parameters ADMINS = getattr(configuration, 'ADMINS', []) -DEBUG = getattr(configuration, 'DEBUG', False) -EMAIL = getattr(configuration, 'EMAIL', {}) -LOGIN_REQUIRED = getattr(configuration, 'LOGIN_REQUIRED', False) +BANNER_BOTTOM = getattr(configuration, 'BANNER_BOTTOM', False) +BANNER_TOP = getattr(configuration, 'BANNER_TOP', False) BASE_PATH = getattr(configuration, 'BASE_PATH', '') if BASE_PATH: BASE_PATH = BASE_PATH.strip('/') + '/' # Enforce trailing slash only +CORS_ORIGIN_ALLOW_ALL = getattr(configuration, 'CORS_ORIGIN_ALLOW_ALL', False) +CORS_ORIGIN_REGEX_WHITELIST = getattr(configuration, 'CORS_ORIGIN_REGEX_WHITELIST', []) +CORS_ORIGIN_WHITELIST = getattr(configuration, 'CORS_ORIGIN_WHITELIST', []) +DATE_FORMAT = getattr(configuration, 'DATE_FORMAT', 'N j, Y') +DATETIME_FORMAT = getattr(configuration, 'DATETIME_FORMAT', 'N j, Y g:i a') +DEBUG = getattr(configuration, 'DEBUG', False) +ENFORCE_GLOBAL_UNIQUE = getattr(configuration, 'ENFORCE_GLOBAL_UNIQUE', False) +EMAIL = getattr(configuration, 'EMAIL', {}) +LOGGING = getattr(configuration, 'LOGGING', {}) +LOGIN_REQUIRED = getattr(configuration, 'LOGIN_REQUIRED', False) MAINTENANCE_MODE = getattr(configuration, 'MAINTENANCE_MODE', False) +MAX_PAGE_SIZE = getattr(configuration, 'MAX_PAGE_SIZE', 1000) PAGINATE_COUNT = getattr(configuration, 'PAGINATE_COUNT', 50) +PREFER_IPV4 = getattr(configuration, 'PREFER_IPV4', False) NETBOX_USERNAME = getattr(configuration, 'NETBOX_USERNAME', '') NETBOX_PASSWORD = getattr(configuration, 'NETBOX_PASSWORD', '') -TIME_ZONE = getattr(configuration, 'TIME_ZONE', 'UTC') -DATE_FORMAT = getattr(configuration, 'DATE_FORMAT', 'N j, Y') SHORT_DATE_FORMAT = getattr(configuration, 'SHORT_DATE_FORMAT', 'Y-m-d') -TIME_FORMAT = getattr(configuration, 'TIME_FORMAT', 'g:i a') -SHORT_TIME_FORMAT = getattr(configuration, 'SHORT_TIME_FORMAT', 'H:i:s') -DATETIME_FORMAT = getattr(configuration, 'DATETIME_FORMAT', 'N j, Y g:i a') SHORT_DATETIME_FORMAT = getattr(configuration, 'SHORT_DATETIME_FORMAT', 'Y-m-d H:i') -BANNER_TOP = getattr(configuration, 'BANNER_TOP', False) -BANNER_BOTTOM = getattr(configuration, 'BANNER_BOTTOM', False) -PREFER_IPV4 = getattr(configuration, 'PREFER_IPV4', False) -ENFORCE_GLOBAL_UNIQUE = getattr(configuration, 'ENFORCE_GLOBAL_UNIQUE', False) -MAX_PAGE_SIZE = getattr(configuration, 'MAX_PAGE_SIZE', 1000) -CORS_ORIGIN_ALLOW_ALL = getattr(configuration, 'CORS_ORIGIN_ALLOW_ALL', False) -CORS_ORIGIN_WHITELIST = getattr(configuration, 'CORS_ORIGIN_WHITELIST', []) -CORS_ORIGIN_REGEX_WHITELIST = getattr(configuration, 'CORS_ORIGIN_REGEX_WHITELIST', []) +SHORT_TIME_FORMAT = getattr(configuration, 'SHORT_TIME_FORMAT', 'H:i:s') +TIME_FORMAT = getattr(configuration, 'TIME_FORMAT', 'g:i a') +TIME_ZONE = getattr(configuration, 'TIME_ZONE', 'UTC') + CSRF_TRUSTED_ORIGINS = ALLOWED_HOSTS # Attempt to import LDAP configuration if it has been defined