Skip to content

Instantly share code, notes, and snippets.

@alanhamlett
Created September 6, 2022 00:21
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alanhamlett/365d48276ac054ae75e595256a7814f7 to your computer and use it in GitHub Desktop.
Save alanhamlett/365d48276ac054ae75e595256a7814f7 to your computer and use it in GitHub Desktop.
WakaQ example worker error log handler
from logging import getLogger, ERROR, Formatter, Filter
from logging.handlers import WatchedFileHandler
from wakatime import app
from wakatime.background import wakaq
TASK_LOG_FORMAT = '[%(asctime)s] %(hostname)s %(levelname)s in %(task)s args=%(task_args)s kwargs=%(task_kwargs)s retry=%(task_retry)s: %(message)s'
class TaskFilter(Filter):
def filter(self, record):
record.hostname = u(app.config.get('HOSTNAME', 'UnknownHost'))
return True
error_handler = WatchedFileHandler(app.config['ERROR_HANDLER_LOG'], delay=True)
error_handler.setLevel(ERROR)
@wakaq.after_worker_started
def after_worker_started():
error_handler.addFilter(TaskFilter())
error_handler.setFormatter(Formatter(TASK_LOG_FORMAT))
logger = getLogger("wakaq")
logger.addHandler(error_handler)
@wakaq.wrap_tasks_with
def custom_task_decorator(fn):
def inner(*args, **kwargs):
with app.app_context():
return fn(*args, **kwargs)
return inner
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment