Source code for cytoflowgui.utility.logging

#!/usr/bin/env python3.8
# coding: latin-1

# (c) Massachusetts Institute of Technology 2015-2018
# (c) Brian Teague 2018-2022
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

"""
cytoflowgui.utility.logging
---------------------------

Logging utilities for `cytoflowgui`
"""

import sys, traceback, threading, logging 

[docs]class CallbackHandler(logging.Handler): def __init__(self, callback, **kwargs): super().__init__(**kwargs) self._callback = callback
[docs] def emit(self, record): self._callback(record)
[docs]def log_exception(): (exc_type, exc_value, tb) = sys.exc_info() err_string = traceback.format_exception_only(exc_type, exc_value)[0] err_loc = traceback.format_tb(tb)[-1] err_ctx = threading.current_thread().name logging.debug("Exception in {0}: {1}" .format(err_ctx, "".join( traceback.format_exception(exc_type, exc_value, tb) ))) logging.error("Error: {0}\nLocation: {1}Thread: {2}" \ .format(err_string, err_loc, err_ctx) )