mirror of
https://github.com/microsoft/autogen.git
synced 2025-11-07 05:14:39 +00:00
35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
import json
|
|
import logging
|
|
|
|
class StructuredMessage:
|
|
def __init__(self, message, /, **kwargs):
|
|
self.message = message
|
|
self.kwargs = kwargs
|
|
|
|
def __str__(self):
|
|
return '%s >>> %s' % (self.message, json.dumps(self.kwargs))
|
|
|
|
_ = StructuredMessage # optional, to improve readability
|
|
|
|
class StructuredLoggingHandler(logging.Handler):
|
|
def emit(self, record):
|
|
try:
|
|
# Use the StructuredMessage if the message is an instance of it
|
|
if isinstance(record.msg, StructuredMessage):
|
|
print("got it")
|
|
message = str(record.msg)
|
|
else:
|
|
message = self.format(record)
|
|
print(message) # You can replace this with any other output method (e.g., writing to a file)
|
|
except Exception:
|
|
self.handleError(record)
|
|
|
|
# Set up the logging configuration to use the custom handler
|
|
logging.basicConfig(level=logging.INFO, format='%(message)s')
|
|
logger = logging.getLogger()
|
|
logger.handlers = [] # Remove default handlers
|
|
structured_handler = StructuredLoggingHandler()
|
|
logger.addHandler(structured_handler)
|
|
|
|
# Example usage
|
|
logging.info(_('message 1', foo='bar', bar='baz', num=123, fnum=123.456)) |