From f2686f81c991954ca7240a85a7eeeba37c69ede7 Mon Sep 17 00:00:00 2001 From: Tim Jenness Date: Fri, 5 Jul 2024 11:23:57 -0700 Subject: [PATCH] Use python logging from python --- python/lsst/afw/cameraGeom/utils.py | 9 ++++----- python/lsst/afw/display/interface.py | 12 ++++++------ python/lsst/afw/image/_image/_fitsIoWithOptions.py | 13 ++++++------- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/python/lsst/afw/cameraGeom/utils.py b/python/lsst/afw/cameraGeom/utils.py index 865b4f22ae..46f2d8e3b0 100644 --- a/python/lsst/afw/cameraGeom/utils.py +++ b/python/lsst/afw/cameraGeom/utils.py @@ -28,6 +28,7 @@ 'showAmp', 'showCcd', 'getCcdInCamBBoxList', 'getCameraImageBBox', 'makeImageFromCamera', 'showCamera', 'makeFocalPlaneWcs', 'findAmp'] +import logging import math import numpy @@ -38,7 +39,6 @@ import lsst.afw.math as afwMath import lsst.afw.cameraGeom as afwCameraGeom import lsst.daf.base as dafBase -import lsst.log import lsst.pex.exceptions as pexExceptions from ._rotateBBoxBy90 import rotateBBoxBy90 @@ -50,7 +50,7 @@ import lsst.afw.display as afwDisplay import lsst.afw.display.utils as displayUtils -_LOG = lsst.log.Log.getLogger(__name__) +_LOG = logging.getLogger(__name__) def prepareWcsData(wcs, amp, isTrimmed=True): @@ -501,7 +501,7 @@ def getCcdImage(self, ccd, imageFactory=afwImage.ImageF, binSize=1, asMaskedImag im = self.callback(im, ccd, imageSource=self) except Exception as e: if self.verbose: - log.error("callback failed: %s", e) + log.exception("callback failed.") im = imageFactory(*bbox.getDimensions()) else: allowRotate = False # the callback was responsible for any rotations @@ -918,8 +918,7 @@ def makeImageFromCamera(camera, detectorNameList=None, background=numpy.nan, buf try: imView[:] = im except pexExceptions.LengthError as e: - log.error("Unable to fit image for detector \"%s\" into image of camera: %s", - det.getName(), e) + log.exception("Unable to fit image for detector \"%s\" into image of camera.", det.getName()) return camIm diff --git a/python/lsst/afw/display/interface.py b/python/lsst/afw/display/interface.py index 9af9514c38..cc8c1c87d3 100644 --- a/python/lsst/afw/display/interface.py +++ b/python/lsst/afw/display/interface.py @@ -28,14 +28,14 @@ "getDisplay", "delAllDisplays", ] +import logging import re import sys import importlib import lsst.afw.geom as afwGeom import lsst.afw.image as afwImage -import lsst.log -logger = lsst.log.Log.getLogger(__name__) +logger = logging.getLogger(__name__) # Symbolic names for mask/line colors. N.b. ds9 supports any X11 color for masks WHITE = "white" @@ -837,13 +837,13 @@ def interact(self): k, x, y = ev.k, ev.x, ev.y # for now if k not in self._callbacks: - logger.warn("No callback registered for {0}".format(k)) + logger.warning("No callback registered for %s", k) else: try: interactFinished = self._callbacks[k](k, x, y) - except Exception as e: - logger.error( - "Display._callbacks['{0}']({0},{1},{2}) failed: {3}".format(k, x, y, e)) + except Exception: + logger.exception( + "Display._callbacks['%s'](%s,%s,%s) failed.", k, x, y) def setCallback(self, k, func=None, noRaise=False): """Set the callback for a key. diff --git a/python/lsst/afw/image/_image/_fitsIoWithOptions.py b/python/lsst/afw/image/_image/_fitsIoWithOptions.py index 7d8c8196c2..509a7761f0 100644 --- a/python/lsst/afw/image/_image/_fitsIoWithOptions.py +++ b/python/lsst/afw/image/_image/_fitsIoWithOptions.py @@ -22,11 +22,12 @@ __all__ = ["imageReadFitsWithOptions", "imageWriteFitsWithOptions", "exposureWriteFitsWithOptions"] +import logging import lsst.geom -from lsst.log import Log from lsst.afw.fits import ImageWriteOptions from ._imageLib import ImageOrigin +_LOG = logging.getLogger("lsst.afw.image") # This must be added to a class as a *classmethod*, for example: # @@ -102,9 +103,8 @@ def imageWriteFitsWithOptions(self, dest, options, item="image"): if options is not None: try: writeOptions = ImageWriteOptions(options.getPropertySet(item)) - except Exception as e: - log = Log.getLogger("lsst.afw.image") - log.warning("Could not parse item %s from options; writing with defaults: %s", item, e) + except Exception: + _LOG.exception("Could not parse item %s from options; writing with defaults.", item) else: self.writeFits(dest, writeOptions) return @@ -127,9 +127,8 @@ def exposureWriteFitsWithOptions(self, dest, options): try: writeOptionDict = {name + "Options": ImageWriteOptions(options.getPropertySet(name)) for name in ("image", "mask", "variance")} - except Exception as e: - log = Log.getLogger("lsst.afw.image") - log.warning("Could not parse options; writing with defaults: %s", e) + except Exception: + _LOG.exception("Could not parse options; writing with defaults.") else: self.writeFits(dest, **writeOptionDict) return