Reference
opensearch_log
A Python logging handler for efficient and reliable direct log transmission to OpenSearch.
Attributes
opensearch_log.urllib3_logger
module-attribute
urllib3_logger = getLogger('opensearch')
Classes
opensearch_log.Logging
Context manager to add fields to log records.
Attributes
opensearch_log.Logging.added_fields
instance-attribute
added_fields: list[str] = []
Functions
opensearch_log.add_log_fields
add_log_fields(**values: Any) -> list[str]
Include fields to all log records.
opensearch_log.log_fields
log_fields(func: Optional[Any] = None, **values: Any) -> Any
Decorate to include fields values
to all log records.
opensearch_log.remove_log_fields
remove_log_fields(*fields: str) -> None
Remove logged fields.
Modules
opensearch_log.base_handler
Base logger for structured logging.
Classes
opensearch_log.base_handler.BaseHandler
Bases: Handler
Abstract base handler for structured logging.
opensearch_log.base_handler.BaseHandler.emit
emit(record: LogRecord) -> None
Emit a logging record in a processed format.
opensearch_log.base_handler.BaseHandler.send_message
send_message(message: Optional[str], record: LogRecord) -> None
Send the log message. This method should be implemented by subclasses.
opensearch_log.cloudwatch_handler
Structured logger that sends logs to AWS CloudWatch.
Attributes
opensearch_log.cloudwatch_handler.BUFFER_SIZE
module-attribute
BUFFER_SIZE = 100
opensearch_log.cloudwatch_handler.FLUSH_SECONDS
module-attribute
FLUSH_SECONDS = 3.0
opensearch_log.cloudwatch_handler.RETRY_NUM
module-attribute
RETRY_NUM = 3
Classes
opensearch_log.cloudwatch_handler.CloudwatchHandler
Bases: BaseHandler
Handler that sends log records to AWS CloudWatch.
opensearch_log.cloudwatch_handler.CloudwatchHandler.buffer_size
instance-attribute
buffer_size = BUFFER_SIZE
opensearch_log.cloudwatch_handler.CloudwatchHandler.flush_seconds
instance-attribute
flush_seconds = FLUSH_SECONDS
opensearch_log.cloudwatch_handler.CloudwatchHandler.log_client
property
log_client: client
Get the boto3 client for CloudWatch logs.
opensearch_log.cloudwatch_handler.CloudwatchHandler.log_group
instance-attribute
log_group = log_group
opensearch_log.cloudwatch_handler.CloudwatchHandler.log_stream
instance-attribute
log_stream = log_stream
opensearch_log.cloudwatch_handler.CloudwatchHandler.close
close() -> None
Flush the buffer and release any outstanding resource.
opensearch_log.cloudwatch_handler.CloudwatchHandler.flush
flush() -> None
Flush the buffer to CloudWatch.
Could run from Timer's thread or from the main thread. So we should not use json_formatter's routines that access ThreadLocal variables.
opensearch_log.cloudwatch_handler.CloudwatchHandler.send_message
send_message(message: Optional[str], record: LogRecord) -> None
Buffer the log message and flush if necessary.
Functions
opensearch_log.cloudwatch_handler.get_logger
get_logger(*args: Any, echo_stdout: bool = False, log_group: str, log_stream: str, log_handler: Optional[BaseHandler] = None, **kwargs: Any) -> Logger
Create a logger that stream logs to CloudWatch.
Modules
opensearch_log.json_log
JSON logging.
Classes
opensearch_log.json_log.Logging
Context manager to add fields to log records.
opensearch_log.json_log.Logging.added_fields
instance-attribute
added_fields: list[str] = []
Functions
opensearch_log.json_log.add_log_fields
add_log_fields(**values: Any) -> list[str]
Include fields to all log records.
opensearch_log.json_log.create_logger
create_logger(log_handler_instance: BaseHandler, level: int, clear_handlers: bool = False) -> Logger
Create a logger that stream logs in JSON format with additional fields.
opensearch_log.json_log.get_json_formatter
get_json_formatter() -> JsonFormatter
Get a JSON formatter.
opensearch_log.json_log.get_logger
get_logger(application: Optional[str] = sys.argv[0], *, log_handler: BaseHandler, level: int = logging.INFO, clear_handlers: bool = False, **values: Any) -> Logger
Get a JSON logger.
opensearch_log.json_log.log_fields
log_fields(func: Optional[Any] = None, **values: Any) -> Any
Decorate to include fields values
to all log records.
opensearch_log.json_log.remove_handlers
remove_handlers(_logger: Logger) -> None
Remove any default handlers.
opensearch_log.json_log.remove_log_fields
remove_log_fields(*fields: str) -> None
Remove logged fields.
opensearch_log.json_log.replace_logger_fields
replace_logger_fields(fields_to_log: dict[str, Any]) -> None
Update logger with new fields to log.
opensearch_log.json_log.set_record_factory
set_record_factory() -> None
Set a log record factory.
opensearch_log.opensearch_handler
Structured logger that sends logs to AWS OpenSearch.
Attributes
opensearch_log.opensearch_handler.BUFFER_SIZE
module-attribute
BUFFER_SIZE = 200
opensearch_log.opensearch_handler.BULK_SIZE
module-attribute
BULK_SIZE = 15
opensearch_log.opensearch_handler.DEFAULT_INDEX_NAME
module-attribute
DEFAULT_INDEX_NAME = 'myindex'
opensearch_log.opensearch_handler.DEFAULT_OPENSEARCH_HOST
module-attribute
DEFAULT_OPENSEARCH_HOST = 'localhost'
opensearch_log.opensearch_handler.FLUSH_SECONDS
module-attribute
FLUSH_SECONDS = 0.8
opensearch_log.opensearch_handler.IGNORED_LOG_RECORD_FIELDS
module-attribute
IGNORED_LOG_RECORD_FIELDS = ['args', 'levelno', 'pathname', 'relativeCreated', 'msecs', 'exc_text']
opensearch_log.opensearch_handler.INDEX_DATE_FORMAT
module-attribute
INDEX_DATE_FORMAT = '%Y.%m.%d'
opensearch_log.opensearch_handler.RETRY_NUM
module-attribute
RETRY_NUM = 3
Classes
opensearch_log.opensearch_handler.IndexRotation
Bases: Enum
Index rotation frequency.
opensearch_log.opensearch_handler.IndexRotation.DAILY
class-attribute
instance-attribute
DAILY = 0
opensearch_log.opensearch_handler.IndexRotation.MONTHLY
class-attribute
instance-attribute
MONTHLY = 10
opensearch_log.opensearch_handler.OpensearchHandler
Bases: BaseHandler
Handler to send log records to AWS OpenSearch.
opensearch_log.opensearch_handler.OpensearchHandler.DAILY
class-attribute
instance-attribute
DAILY = DAILY
opensearch_log.opensearch_handler.OpensearchHandler.MONTHLY
class-attribute
instance-attribute
MONTHLY = MONTHLY
opensearch_log.opensearch_handler.OpensearchHandler.buffer_size
instance-attribute
buffer_size = buffer_size
opensearch_log.opensearch_handler.OpensearchHandler.flush_seconds
instance-attribute
flush_seconds = flush_seconds
opensearch_log.opensearch_handler.OpensearchHandler.index_name
instance-attribute
index_name = index_name
opensearch_log.opensearch_handler.OpensearchHandler.index_rotate
instance-attribute
index_rotate = IndexRotation[index_rotate]
opensearch_log.opensearch_handler.OpensearchHandler.opensearch_host
instance-attribute
opensearch_host = opensearch_host
opensearch_log.opensearch_handler.OpensearchHandler.close
close() -> None
Flush the buffer on close.
opensearch_log.opensearch_handler.OpensearchHandler.emit
emit(record: LogRecord) -> None
Emit a logging record in a processed format.
opensearch_log.opensearch_handler.OpensearchHandler.flush
flush() -> None
Flush the buffer.
opensearch_log.opensearch_handler.OpensearchHandler.is_connected
is_connected() -> bool
Return True if we can ping the OpenSearch.
opensearch_log.opensearch_handler.OpensearchHandler.send_message
send_message(message: Optional[str], record: LogRecord) -> None
Send the log message to OpenSearch.
Functions
opensearch_log.opensearch_handler.get_logger
get_logger(*args: Any, opensearch_host: str = DEFAULT_OPENSEARCH_HOST, index_name: str = DEFAULT_INDEX_NAME, index_rotate: Union[IndexRotation, str] = IndexRotation.DAILY, echo_stdout: bool = False, buffer_size: int = BUFFER_SIZE, flush_seconds: float = FLUSH_SECONDS, log_handler: Optional[BaseHandler] = None, **kwargs: Any) -> Logger
Create a logger that stream logs to OpenSearch.
opensearch_log.opensearch_handler.restore_logger
restore_logger() -> None
Flush and remove all handlers.
Modules
opensearch_log.opensearch_serializer
JSON serializer.
Classes
opensearch_log.opensearch_serializer.OpenSearchSerializer
Bases: JSONSerializer
Override OpenSearch JSON serializer.
Ignore serialization errors.
opensearch_log.opensearch_serializer.OpenSearchSerializer.default
default(data: Any) -> Any
Catch all serialization fails and fall to str.
opensearch_log.stdout_handler
JSON logging to stdout.
Classes
opensearch_log.stdout_handler.StdoutHandler
Bases: BaseHandler
Handler to send json log to stdout.
opensearch_log.stdout_handler.StdoutHandler.send_message
send_message(message: Optional[str], record: LogRecord) -> None
Send the log message to stdout.
Functions
opensearch_log.stdout_handler.add_stdout_json_handler
add_stdout_json_handler(logger: Logger) -> None
Add a stdout handler to the logger.
opensearch_log.stdout_handler.get_logger
get_logger(application: Optional[str] = None, branch: Optional[str] = None, *, level: int = logging.INFO, clear_handlers: bool = False, **values: Any) -> Logger
Get a logger to send JSON logs to stdout.