From b65f7414bcbbad94f0e08322c0d4e9b9c2b0bafb Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Mon, 16 Sep 2024 17:41:18 +0200 Subject: [PATCH 1/2] Send logs to stdout if SEATABLE_LOG_TO_STDOUT == 'true' --- dtable_events/dtable_io/utils.py | 7 ++++++- dtable_events/tasks/dtable_rows_counter.py | 8 ++++++-- dtable_events/tasks/dtable_updates_sender.py | 8 ++++++-- dtable_events/tasks/dtables_cleaner.py | 7 +++++-- dtable_events/tasks/email_notices_sender.py | 8 ++++++-- dtable_events/tasks/instant_notices_sender.py | 7 +++++-- dtable_events/tasks/ldap_syncer.py | 8 ++++++-- 7 files changed, 40 insertions(+), 13 deletions(-) diff --git a/dtable_events/dtable_io/utils.py b/dtable_events/dtable_io/utils.py index ac4fbabb..1cd3443a 100644 --- a/dtable_events/dtable_io/utils.py +++ b/dtable_events/dtable_io/utils.py @@ -44,7 +44,12 @@ def setup_logger(logname): """ logdir = os.path.join(os.environ.get('LOG_DIR', '')) log_file = os.path.join(logdir, logname) - handler = handlers.TimedRotatingFileHandler(log_file, when='MIDNIGHT', interval=1, backupCount=7) + + if os.environ.get('SEATABLE_LOG_TO_STDOUT', 'false').lower() == 'true': + handler = logging.StreamHandler(sys.stdout) + else: + handler = handlers.TimedRotatingFileHandler(log_file, when='MIDNIGHT', interval=1, backupCount=7) + formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s') handler.setFormatter(formatter) handler.addFilter(logging.Filter(logname)) diff --git a/dtable_events/tasks/dtable_rows_counter.py b/dtable_events/tasks/dtable_rows_counter.py index 00421ecf..ec02bc47 100644 --- a/dtable_events/tasks/dtable_rows_counter.py +++ b/dtable_events/tasks/dtable_rows_counter.py @@ -67,8 +67,12 @@ def run(self): manage_py, 'count_user_org_rows' ] - with open(self._logfile, 'a') as fp: - run(cmd, cwd=dtable_web_dir, output=fp) + + if os.environ.get('SEATABLE_LOG_TO_STDOUT', 'false').lower() == 'true': + run(cmd, cwd=dtable_web_dir) + else: + with open(self._logfile, 'a') as fp: + run(cmd, cwd=dtable_web_dir, output=fp) except Exception as e: logging.exception('error when counting rows: %s', e) diff --git a/dtable_events/tasks/dtable_updates_sender.py b/dtable_events/tasks/dtable_updates_sender.py index 0d0860e8..5033df1a 100644 --- a/dtable_events/tasks/dtable_updates_sender.py +++ b/dtable_events/tasks/dtable_updates_sender.py @@ -72,8 +72,12 @@ def run(self): manage_py, 'send_dtable_updates', ] - with open(self._logfile, 'a') as fp: - run_and_wait(cmd, cwd=dtable_web_dir, output=fp) + + if os.environ.get('SEATABLE_LOG_TO_STDOUT', 'false').lower() == 'true': + run_and_wait(cmd, cwd=dtable_web_dir) + else: + with open(self._logfile, 'a') as fp: + run_and_wait(cmd, cwd=dtable_web_dir, output=fp) except Exception as e: logging.exception('send dtable updates email error: %s', e) diff --git a/dtable_events/tasks/dtables_cleaner.py b/dtable_events/tasks/dtables_cleaner.py index 80b78993..2b6ed795 100644 --- a/dtable_events/tasks/dtables_cleaner.py +++ b/dtable_events/tasks/dtables_cleaner.py @@ -64,8 +64,11 @@ def run(self): 'clean_trash_dtables', self._expire_seconds, ] - with open(self._logfile, 'a') as fp: - run(cmd, cwd=dtable_web_dir, output=fp) + if os.environ.get('SEATABLE_LOG_TO_STDOUT', 'false').lower() == 'true': + run(cmd, cwd=dtable_web_dir) + else: + with open(self._logfile, 'a') as fp: + run(cmd, cwd=dtable_web_dir, output=fp) except Exception as e: logging.exception('error when cleaning trash dtables: %s', e) diff --git a/dtable_events/tasks/email_notices_sender.py b/dtable_events/tasks/email_notices_sender.py index fd4c59b2..9ce2ac5d 100644 --- a/dtable_events/tasks/email_notices_sender.py +++ b/dtable_events/tasks/email_notices_sender.py @@ -77,8 +77,12 @@ def run(self): manage_py, 'send_email_notices', ] - with open(self._logfile, 'a') as fp: - run(cmd, cwd=dtable_web_dir, output=fp) + + if os.environ.get('SEATABLE_LOG_TO_STDOUT', 'false').lower() == 'true': + run(cmd, cwd=dtable_web_dir) + else: + with open(self._logfile, 'a') as fp: + run(cmd, cwd=dtable_web_dir, output=fp) except Exception as e: logging.exception('error when send email: %s', e) diff --git a/dtable_events/tasks/instant_notices_sender.py b/dtable_events/tasks/instant_notices_sender.py index a28db800..0847f500 100644 --- a/dtable_events/tasks/instant_notices_sender.py +++ b/dtable_events/tasks/instant_notices_sender.py @@ -85,8 +85,11 @@ def run(self): 'send_instant_notices', ] - with open(self._logfile, 'a') as fp: - run(cmd, cwd=dtable_web_dir, output=fp) + if os.environ.get('SEATABLE_LOG_TO_STDOUT', 'false').lower() == 'true': + run(cmd, cwd=dtable_web_dir) + else: + with open(self._logfile, 'a') as fp: + run(cmd, cwd=dtable_web_dir, output=fp) except Exception as e: logging.exception('send instant notices error: %s', e) diff --git a/dtable_events/tasks/ldap_syncer.py b/dtable_events/tasks/ldap_syncer.py index 3ac302b5..4d7cea01 100644 --- a/dtable_events/tasks/ldap_syncer.py +++ b/dtable_events/tasks/ldap_syncer.py @@ -80,8 +80,12 @@ def run(self): manage_py, 'ldap_group_sync' ] - with open(self._logfile, 'a') as fp: - run_and_wait(cmd, cwd=dtable_web_dir, output=fp) + + if os.environ.get('SEATABLE_LOG_TO_STDOUT', 'false').lower() == 'true': + run_and_wait(cmd, cwd=dtable_web_dir) + else: + with open(self._logfile, 'a') as fp: + run_and_wait(cmd, cwd=dtable_web_dir, output=fp) except Exception as e: logging.exception('error when sync ldap group: %s', e) From 355f42e1c7d6cd9adeecf6540804c340cb085671 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Mon, 16 Sep 2024 17:43:06 +0200 Subject: [PATCH 2/2] Align log format: [time] [level] --- dtable_events/app/log.py | 4 ++-- dtable_events/dtable_io/utils.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dtable_events/app/log.py b/dtable_events/app/log.py index fac8d69e..35329212 100644 --- a/dtable_events/app/log.py +++ b/dtable_events/app/log.py @@ -36,8 +36,8 @@ def _rotating_config(self): def _basic_config(self): # Log to stdout. Mainly for development. kw = { - 'format': '[%(asctime)s] %(filename)s[line:%(lineno)d] [%(levelname)s] %(message)s', - 'datefmt': '%m/%d/%Y %H:%M:%S', + 'format': '[%(asctime)s] [%(levelname)s] %(filename)s[line:%(lineno)d] %(message)s', + 'datefmt': '%Y-%m-%d %H:%M:%S', 'level': self._level, 'stream': sys.stdout } diff --git a/dtable_events/dtable_io/utils.py b/dtable_events/dtable_io/utils.py index 1cd3443a..1154f358 100644 --- a/dtable_events/dtable_io/utils.py +++ b/dtable_events/dtable_io/utils.py @@ -50,7 +50,7 @@ def setup_logger(logname): else: handler = handlers.TimedRotatingFileHandler(log_file, when='MIDNIGHT', interval=1, backupCount=7) - formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s') + formatter = logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s', datefmt='%Y-%m-%d %H:%M:%S') handler.setFormatter(formatter) handler.addFilter(logging.Filter(logname))