Skip to content

Instantly share code, notes, and snippets.

@bdnf
Last active August 31, 2020 10:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bdnf/e39b7416a885d91457738fa67bf0ee92 to your computer and use it in GitHub Desktop.
Save bdnf/e39b7416a885d91457738fa67bf0ee92 to your computer and use it in GitHub Desktop.
Logging across multiple modules
#app.py
import logging
from logging.handlers import TimedRotatingFileHandler
from flask import Flask
import new_module1
import new_module2
def create_app():
app = Flask(__name__)
logging.info('Started')
return app
from os import path
def create_logger(parent_dir='/var/log'):
log_directory = os.path.join(parent_dir, 'messages')
if not os.path.exists(log_directory):
os.makedirs(log_directory)
error_directory = os.path.join(parent_dir, 'errors')
if not os.path.exists(error_directory):
os.makedirs(error_directory)
log_file_path = path.join(log_directory, 'client.log')
error_log_file_path = path.join(error_directory, 'error.log')
logger = logging.getLogger(__name__)
formatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
# log into stdout as well
handler = logging.StreamHandler()
handler.setFormatter(formatter)
handler.setLevel(logging.DEBUG)
# add multiple file handlers
handler_info = TimedRotatingFileHandler(log_file_path, when="midnight", interval=1)
handler_error = TimedRotatingFileHandler(error_log_file_path, when="midnight", interval=1)
handler_info.setLevel(logging.INFO)
handler_error.setLevel(logging.ERROR)
handler_info.setFormatter(formatter)
handler_error.setFormatter(formatter)
logger.addHandler(handler)
logger.addHandler(handler_info)
logger.addHandler(handler_error)
logger.setLevel(logging.INFO)
return logger
if __name__ == '__main__':
logger = create_logger()
new_module.Module1()
create_app()
logger.info('Finished')
---
# new_module1.py
import logging
from new_module2 import Module2
class Module1:
def __init__(self):
logger = logging.getLogger(__name__)
logger.info('[Module1] Doing something')
logger.info('[Module1] Doing something')
logger.info('[Module1] Doing something')
self.module2 = Module2()
---
# new_module2.py
import logging
class Module2:
def __init__(self):
logger = logging.getLogger(__name__)
logger.info('[Module2] Doing something')
logger.info('[Module2] Doing something')
logger.info('[Module2] Doing something')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment