Skip to content

Commit

Permalink
Catch logging messages in a queue so that they can be added to the re…
Browse files Browse the repository at this point in the history
…turn object.
  • Loading branch information
david-i-berry committed Sep 5, 2023
1 parent 2aab2e2 commit 8c13db4
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 14 deletions.
37 changes: 34 additions & 3 deletions synop2bufr/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,41 @@
from io import StringIO
import json
import logging
import logging.handlers
import math
import os
from queue import Queue
import re
import sys
from typing import Iterator

from csv2bufr import BUFRMessage
from pymetdecoder import synop

__version__ = '0.5.1'

LOGGER = logging.getLogger(__name__)
logging_events = Queue()

# Set up logging
LOGGER = logging.getLogger(__name__) # logger for this module
root_logger = logging.getLogger() # pymetdecoder writes to the root logger

# Format for the output
formatter = logging.Formatter(fmt="%(asctime)s [%(levelname)s] %(message)s",
datefmt="%Y-%m-%d %H:%M:%S")

# Handlers, one for an error / warning event queue
queue_handler = logging.handlers.QueueHandler(logging_events)
queue_handler.setFormatter(formatter)

# And one for stdout
stdout_handler = logging.StreamHandler(stream=sys.stdout)
stdout_handler.setFormatter(formatter)


# Add these to the root logger
root_logger.addHandler(queue_handler)
root_logger.addHandler(stdout_handler)

# status codes
FAILED = 0
Expand Down Expand Up @@ -1515,8 +1539,15 @@ def transform(data: str, metadata: str, year: int,
"csv": csv_string
}

result["warnings"] = warning_msgs
result["errors"] = error_msgs
result["warnings"] = []
result["errors"] = []

while (not logging_events.empty()):
event = logging_events.get()
if event.levelno == logging.WARNING:
result["warnings"].append(event.message)
elif event.levelno in (logging.ERROR, logging.CRITICAL): # noqs
result["errors"].append(event.message)

# now yield result back to caller
yield result
Expand Down
13 changes: 2 additions & 11 deletions synop2bufr/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,7 @@
datefmt="%Y-%m-%d %H:%M:%S"
)

# if (LOGGER.hasHandlers()):
# LOGGER.handlers.clear()

# # Configure error handler
# handler_err = logging.StreamHandler(sys.stderr)
# handler_err.setLevel(logging.ERROR)
# handler_err.setFormatter(logging.Formatter(
# fmt="%(asctime)s [%(levelname)s] %(message)s",
# datefmt="%Y-%m-%d %H:%M:%S"
# ))
# LOGGER.addHandler(handler_err)
LOGGER.setLevel(log_level)


def cli_option_verbosity(f):
Expand Down Expand Up @@ -120,6 +110,7 @@ def transform(ctx, synop_file, metadata, output_dir, year, month, verbosity):
'%Y%m%dT%H%M%S'
)


filename = f"decoded_{timestamp}.csv"

if header_written:
Expand Down

0 comments on commit 8c13db4

Please sign in to comment.