diff --git a/python_logging_rabbitmq/handlers.py b/python_logging_rabbitmq/handlers.py index 639221f..2eae09a 100644 --- a/python_logging_rabbitmq/handlers.py +++ b/python_logging_rabbitmq/handlers.py @@ -25,7 +25,8 @@ def __init__(self, level=logging.NOTSET, formatter=None, fields=None, fields_under_root=True, message_headers=None, record_fields=None, exclude_record_fields=None, heartbeat=60, - content_type='text/plain'): + content_type='text/plain', + expiration=None): # Initialize the handler. # # :param level: Logs level. @@ -49,6 +50,7 @@ def __init__(self, level=logging.NOTSET, formatter=None, # :exclude_record_fields: A set of attributes that should be ignored from the record object. # :heartbeat: Lower bound for heartbeat timeout. # :content_type: The format of the message sent to the queue. + # :expiration: Expiry time (ms) for RabbitMQ messages (str or None). super(RabbitMQHandler, self).__init__(level=level) @@ -74,6 +76,7 @@ def __init__(self, level=logging.NOTSET, formatter=None, # Extra params for message publication self.message_headers = message_headers self.content_type = content_type + self.expiration = expiration # Save routing-key formatter. self.routing_key_formatter = routing_key_formatter @@ -172,6 +175,7 @@ def emit(self, record): properties=pika.BasicProperties( delivery_mode=2, headers=self.message_headers, + expiration=self.expiration, content_type=self.content_type ) ) diff --git a/python_logging_rabbitmq/handlers_oneway.py b/python_logging_rabbitmq/handlers_oneway.py index a63ecce..1631eda 100644 --- a/python_logging_rabbitmq/handlers_oneway.py +++ b/python_logging_rabbitmq/handlers_oneway.py @@ -29,7 +29,8 @@ def __init__(self, level=logging.NOTSET, formatter=None, fields=None, fields_under_root=True, message_headers=None, record_fields=None, exclude_record_fields=None, heartbeat=60, - content_type='text/plain'): + content_type='text/plain', + expiration=None): # Initialize the handler. # # :param level: Logs level. @@ -53,6 +54,7 @@ def __init__(self, level=logging.NOTSET, formatter=None, # :exclude_record_fields: A set of attributes that should be ignored from the record object. # :heartbeat: Lower bound for heartbeat timeout. # :content_type: The format of the message sent to the queue. + # :expiration: Expiry time (ms) for RabbitMQ messages (str or None). super(RabbitMQHandlerOneWay, self).__init__(level=level) @@ -78,6 +80,7 @@ def __init__(self, level=logging.NOTSET, formatter=None, # Extra params for message publication self.message_headers = message_headers self.content_type = content_type + self.expiration = expiration # Save routing-key formatter. self.routing_key_formatter = routing_key_formatter @@ -171,6 +174,7 @@ def message_worker(self): properties=pika.BasicProperties( delivery_mode=2, headers=self.message_headers, + expiration=self.expiration, content_type=self.content_type ) )