def _configure_watchtower_logging_handler(): aws_access_key_id = os.getenv("AWS_ACCESS_KEY_ID", None) aws_secret_access_key = os.getenv("AWS_SECRET_ACCESS_KEY", None) aws_region_name = os.getenv("AWS_REGION_NAME", None) log_group = "platform" stream_name = _get_aws_logging_stream_name(OPENSHIFT_ENVIRONMENT_NAME_FILE) log_level = os.getenv("INVENTORY_LOG_LEVEL", "WARNING").upper() if all([ aws_access_key_id, aws_secret_access_key, aws_region_name, stream_name ]): print( f"Configuring watchtower logging (log_group={log_group}, stream_name={stream_name})" ) boto3_session = Session(aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, region_name=aws_region_name) root = logging.getLogger() handler = watchtower.CloudWatchLogHandler(boto3_session=boto3_session, log_group=log_group, stream_name=stream_name) handler.setFormatter(logstash_formatter.LogstashFormatterV1()) root.addHandler(handler) for logger_name in ("app", "app.models", "api", "api.host"): app_logger = logging.getLogger(logger_name) app_logger.setLevel(log_level) else: print("Unable to configure watchtower logging. Please " "verify watchtower logging configuration!")
def setUp(self): self.stream = StringIO.StringIO() handler = logging.StreamHandler(self.stream) handler.setFormatter(logstash_formatter.LogstashFormatterV1()) handler.setLevel(logging.DEBUG) self.log = logging.getLogger('test') self.log.addHandler(handler)
def _configure_watchtower_logging_handler(): aws_access_key_id = os.getenv("AWS_ACCESS_KEY_ID", None) aws_secret_access_key = os.getenv("AWS_SECRET_ACCESS_KEY", None) aws_region_name = os.getenv("AWS_REGION_NAME", None) log_group = os.getenv("AWS_LOG_GROUP", "platform") stream_name = os.getenv("AWS_LOG_STREAM", _get_hostname()) # default to hostname create_log_group = str(os.getenv("AWS_CREATE_LOG_GROUP")).lower() == "true" if all([aws_access_key_id, aws_secret_access_key, aws_region_name, stream_name]): print(f"Configuring watchtower logging (log_group={log_group}, stream_name={stream_name})") boto3_session = Session( aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, region_name=aws_region_name, ) root = logging.getLogger() handler = watchtower.CloudWatchLogHandler( boto3_session=boto3_session, log_group=log_group, stream_name=stream_name, create_log_group=create_log_group, ) handler.setFormatter(logstash_formatter.LogstashFormatterV1()) root.addHandler(handler) else: print("Unable to configure watchtower logging. Please verify watchtower logging configuration!")
def _configure_watchtower_logging_handler(): aws_access_key_id = os.getenv("AWS_ACCESS_KEY_ID", None) aws_secret_access_key = os.getenv("AWS_SECRET_ACCESS_KEY", None) aws_region_name = os.getenv("AWS_REGION_NAME", None) log_group = os.getenv("AWS_LOG_GROUP", "platform") stream_name = _get_aws_logging_stream_name(OPENSHIFT_ENVIRONMENT_NAME_FILE) if all([ aws_access_key_id, aws_secret_access_key, aws_region_name, stream_name ]): print( f"Configuring watchtower logging (log_group={log_group}, stream_name={stream_name})" ) boto3_session = Session(aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, region_name=aws_region_name) root = logging.getLogger() handler = watchtower.CloudWatchLogHandler(boto3_session=boto3_session, log_group=log_group, stream_name=stream_name) handler.setFormatter(logstash_formatter.LogstashFormatterV1()) root.addHandler(handler) else: print("Unable to configure watchtower logging. Please " "verify watchtower logging configuration!")
def __init__(self): boto3_session = boto3.Session( aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY, region_name=AWS_REGION_NAME, ) super().__init__( boto3_session=boto3_session, log_group=LOGGING_GROUP, stream_name=LOGGING_STREAM_NAME, ) # TODO(cutwater): Request ID should not depend on Django framework # self.addFilter(request_id.logging.RequestIdFilter()) self.setFormatter(logstash_formatter.LogstashFormatterV1())
def __init__(self): config = settings.CLOUD_WATCH_LOGGER boto3_session = boto3.Session( aws_access_key_id=config['AWS_ACCESS_KEY_ID'], aws_secret_access_key=config['AWS_SECRET_ACCESS_KEY'], region_name=config['AWS_REGION_NAME'], ) super().__init__( boto3_session=boto3_session, log_group=config['LOGGING_GROUP'], stream_name=config['LOGGING_STREAM_NAME'], ) self.addFilter(request_id.logging.RequestIdFilter()) self.setFormatter(logstash_formatter.LogstashFormatterV1())
def setup(self, cfg): super().setup(cfg) self._set_handler(self.error_log, cfg.errorlog, logstash_formatter.LogstashFormatterV1())
class CleanNoneAndUnusedFieldsEncoder(json.JSONEncoder): """Remove fields which are None or unused""" def encode(self, o): unused_fields = ( '@version', 'args', 'created', 'funcName', 'levelno', 'module', 'msecs', 'pathname', 'processName', 'relativeCreated', 'thread', 'threadName', ) for key, value in list(o.items()): if value is None or key in unused_fields: del o[key] o = super().encode(o) return o for handler in logging.getLogger().handlers: handler.setFormatter( logstash_formatter.LogstashFormatterV1( json_cls=CleanNoneAndUnusedFieldsEncoder))