コード例 #1
0
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)
コード例 #3
0
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!")
コード例 #4
0
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!")
コード例 #5
0
 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())
コード例 #6
0
 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())
コード例 #7
0
    def setup(self, cfg):
        super().setup(cfg)

        self._set_handler(self.error_log, cfg.errorlog,
                          logstash_formatter.LogstashFormatterV1())
コード例 #8
0
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))