settings: Define logging paths with, like, normal human variables.

This makes these variables available for type-checking.

Signed-off-by: Anders Kaseorg <anders@zulipchat.com>
This commit is contained in:
Anders Kaseorg
2019-11-12 17:56:12 -08:00
committed by Tim Abbott
parent cafac83676
commit 6fe5e44b35
3 changed files with 33 additions and 36 deletions

View File

@@ -174,8 +174,8 @@ messages).
### State and logs files ### State and logs files
When writing out state of log files, always declare the path in When writing out state of log files, always declare the path with
`ZULIP_PATHS` in `zproject/settings.py`, which will do the right thing `zulip_path` in `zproject/settings.py`, which will do the right thing
in both development and production. in both development and production.
## JS array/object manipulation ## JS array/object manipulation

View File

@@ -240,7 +240,7 @@ def log_to_file(logger: Logger,
filename: str, filename: str,
log_format: str="%(asctime)s %(levelname)-8s %(message)s", log_format: str="%(asctime)s %(levelname)-8s %(message)s",
) -> None: ) -> None:
"""Note: `filename` should be declared in zproject/settings.py in ZULIP_PATHS.""" """Note: `filename` should be declared in zproject/settings.py with zulip_path."""
formatter = logging.Formatter(log_format) formatter = logging.Formatter(log_format)
handler = logging.FileHandler(filename) handler = logging.FileHandler(filename)
handler.setFormatter(formatter) handler.setFormatter(formatter)

View File

@@ -1027,45 +1027,42 @@ TEMPLATES = [
# LOGGING SETTINGS # LOGGING SETTINGS
######################################################################## ########################################################################
ZULIP_PATHS = [ def zulip_path(path: str) -> str:
("SERVER_LOG_PATH", "/var/log/zulip/server.log"),
("ERROR_FILE_LOG_PATH", "/var/log/zulip/errors.log"),
("MANAGEMENT_LOG_PATH", "/var/log/zulip/manage.log"),
("WORKER_LOG_PATH", "/var/log/zulip/workers.log"),
("JSON_PERSISTENT_QUEUE_FILENAME_PATTERN", "/home/zulip/tornado/event_queues%s.json"),
("EMAIL_LOG_PATH", "/var/log/zulip/send_email.log"),
("EMAIL_MIRROR_LOG_PATH", "/var/log/zulip/email_mirror.log"),
("EMAIL_DELIVERER_LOG_PATH", "/var/log/zulip/email-deliverer.log"),
("EMAIL_CONTENT_LOG_PATH", "/var/log/zulip/email_content.log"),
("LDAP_SYNC_LOG_PATH", "/var/log/zulip/sync_ldap_user_data.log"),
("QUEUE_ERROR_DIR", "/var/log/zulip/queue_error"),
("DIGEST_LOG_PATH", "/var/log/zulip/digest.log"),
("ANALYTICS_LOG_PATH", "/var/log/zulip/analytics.log"),
("ANALYTICS_LOCK_DIR", "/home/zulip/deployments/analytics-lock-dir"),
("API_KEY_ONLY_WEBHOOK_LOG_PATH", "/var/log/zulip/webhooks_errors.log"),
("WEBHOOK_UNEXPECTED_EVENTS_LOG_PATH", "/var/log/zulip/webhooks_unexpected_events.log"),
("SOFT_DEACTIVATION_LOG_PATH", "/var/log/zulip/soft_deactivation.log"),
("TRACEMALLOC_DUMP_DIR", "/var/log/zulip/tracemalloc"),
("SCHEDULED_MESSAGE_DELIVERER_LOG_PATH",
"/var/log/zulip/scheduled_message_deliverer.log"),
("RETENTION_LOG_PATH", "/var/log/zulip/message_retention.log"),
]
# The Event log basically logs most significant database changes,
# which can be useful for debugging.
if EVENT_LOGS_ENABLED:
ZULIP_PATHS.append(("EVENT_LOG_DIR", "/home/zulip/logs/event_log"))
else:
EVENT_LOG_DIR = None
for (var, path) in ZULIP_PATHS:
if DEVELOPMENT: if DEVELOPMENT:
# if DEVELOPMENT, store these files in the Zulip checkout # if DEVELOPMENT, store these files in the Zulip checkout
if path.startswith("/var/log"): if path.startswith("/var/log"):
path = os.path.join(DEVELOPMENT_LOG_DIRECTORY, os.path.basename(path)) path = os.path.join(DEVELOPMENT_LOG_DIRECTORY, os.path.basename(path))
else: else:
path = os.path.join(os.path.join(DEPLOY_ROOT, 'var'), os.path.basename(path)) path = os.path.join(os.path.join(DEPLOY_ROOT, 'var'), os.path.basename(path))
vars()[var] = path return path
SERVER_LOG_PATH = zulip_path("/var/log/zulip/server.log")
ERROR_FILE_LOG_PATH = zulip_path("/var/log/zulip/errors.log")
MANAGEMENT_LOG_PATH = zulip_path("/var/log/zulip/manage.log")
WORKER_LOG_PATH = zulip_path("/var/log/zulip/workers.log")
JSON_PERSISTENT_QUEUE_FILENAME_PATTERN = zulip_path("/home/zulip/tornado/event_queues%s.json")
EMAIL_LOG_PATH = zulip_path("/var/log/zulip/send_email.log")
EMAIL_MIRROR_LOG_PATH = zulip_path("/var/log/zulip/email_mirror.log")
EMAIL_DELIVERER_LOG_PATH = zulip_path("/var/log/zulip/email-deliverer.log")
EMAIL_CONTENT_LOG_PATH = zulip_path("/var/log/zulip/email_content.log")
LDAP_SYNC_LOG_PATH = zulip_path("/var/log/zulip/sync_ldap_user_data.log")
QUEUE_ERROR_DIR = zulip_path("/var/log/zulip/queue_error")
DIGEST_LOG_PATH = zulip_path("/var/log/zulip/digest.log")
ANALYTICS_LOG_PATH = zulip_path("/var/log/zulip/analytics.log")
ANALYTICS_LOCK_DIR = zulip_path("/home/zulip/deployments/analytics-lock-dir")
API_KEY_ONLY_WEBHOOK_LOG_PATH = zulip_path("/var/log/zulip/webhooks_errors.log")
WEBHOOK_UNEXPECTED_EVENTS_LOG_PATH = zulip_path("/var/log/zulip/webhooks_unexpected_events.log")
SOFT_DEACTIVATION_LOG_PATH = zulip_path("/var/log/zulip/soft_deactivation.log")
TRACEMALLOC_DUMP_DIR = zulip_path("/var/log/zulip/tracemalloc")
SCHEDULED_MESSAGE_DELIVERER_LOG_PATH = zulip_path("/var/log/zulip/scheduled_message_deliverer.log")
RETENTION_LOG_PATH = zulip_path("/var/log/zulip/message_retention.log")
# The Event log basically logs most significant database changes,
# which can be useful for debugging.
if EVENT_LOGS_ENABLED:
EVENT_LOG_DIR = zulip_path("/home/zulip/logs/event_log") # type: Optional[str]
else:
EVENT_LOG_DIR = None
ZULIP_WORKER_TEST_FILE = '/tmp/zulip-worker-test-file' ZULIP_WORKER_TEST_FILE = '/tmp/zulip-worker-test-file'