|
20 | 20 | from json import JSONDecodeError
|
21 | 21 | from zoneinfo import ZoneInfo
|
22 | 22 |
|
23 |
| -from boto3.session import Session |
24 |
| -from botocore.exceptions import ClientError |
| 23 | +import boto3 |
25 | 24 | from corsheaders.defaults import default_headers
|
26 | 25 | from oci import config
|
27 | 26 | from oci.exceptions import ConfigFileNotFound
|
|
361 | 360 | }
|
362 | 361 |
|
363 | 362 | CW_AWS_ACCESS_KEY_ID = CONFIGURATOR.get_cloudwatch_access_id()
|
364 |
| -CW_AWS_SECRET_ACCESS_KEY = CONFIGURATOR.get_cloudwatch_access_key() |
365 |
| -CW_AWS_REGION = CONFIGURATOR.get_cloudwatch_region() |
| 363 | + |
| 364 | +CLOUDWATCH_CREDENTIALS = { |
| 365 | + "aws_access_key_id": CW_AWS_ACCESS_KEY_ID, |
| 366 | + "aws_secret_access_key": CONFIGURATOR.get_cloudwatch_access_key(), |
| 367 | + "region_name": CONFIGURATOR.get_cloudwatch_region(), |
| 368 | +} |
| 369 | + |
366 | 370 | CW_LOG_GROUP = CONFIGURATOR.get_cloudwatch_log_group()
|
367 | 371 |
|
368 | 372 | LOGGING_FORMATTER = ENVIRONMENT.get_value("DJANGO_LOG_FORMATTER", default="simple")
|
|
384 | 388 | LOGGING_FILE = ENVIRONMENT.get_value("DJANGO_LOG_FILE", default=DEFAULT_LOG_FILE)
|
385 | 389 |
|
386 | 390 | if CW_AWS_ACCESS_KEY_ID:
|
387 |
| - try: |
388 |
| - POD_NAME = ENVIRONMENT.get_value("APP_POD_NAME", default="local") |
389 |
| - BOTO3_SESSION = Session( |
390 |
| - aws_access_key_id=CW_AWS_ACCESS_KEY_ID, |
391 |
| - aws_secret_access_key=CW_AWS_SECRET_ACCESS_KEY, |
392 |
| - region_name=CW_AWS_REGION, |
393 |
| - ) |
394 |
| - watchtower = BOTO3_SESSION.client("logs") |
395 |
| - watchtower.create_log_stream(logGroupName=CW_LOG_GROUP, logStreamName=POD_NAME) |
396 |
| - LOGGING_HANDLERS += ["watchtower"] |
397 |
| - WATCHTOWER_HANDLER = { |
398 |
| - "level": KOKU_LOGGING_LEVEL, |
399 |
| - "class": "watchtower.CloudWatchLogHandler", |
400 |
| - "boto3_session": BOTO3_SESSION, |
401 |
| - "log_group": CW_LOG_GROUP, |
402 |
| - "stream_name": POD_NAME, |
403 |
| - "formatter": LOGGING_FORMATTER, |
404 |
| - "use_queues": False, |
405 |
| - "create_log_group": False, |
406 |
| - } |
407 |
| - except ClientError as e: |
408 |
| - if e.response.get("Error", {}).get("Code") == "ResourceAlreadyExistsException": |
409 |
| - LOGGING_HANDLERS += ["watchtower"] |
410 |
| - WATCHTOWER_HANDLER = { |
411 |
| - "level": KOKU_LOGGING_LEVEL, |
412 |
| - "class": "watchtower.CloudWatchLogHandler", |
413 |
| - "boto3_session": BOTO3_SESSION, |
414 |
| - "log_group": CW_LOG_GROUP, |
415 |
| - "stream_name": POD_NAME, |
416 |
| - "formatter": LOGGING_FORMATTER, |
417 |
| - "use_queues": False, |
418 |
| - "create_log_group": False, |
419 |
| - } |
420 |
| - else: |
421 |
| - print("CloudWatch not configured.") |
| 391 | + cw_client = boto3.client("logs", **CLOUDWATCH_CREDENTIALS) |
| 392 | + POD_NAME = ENVIRONMENT.get_value("APP_POD_NAME", default="local") |
| 393 | + LOGGING_HANDLERS += ["watchtower"] |
| 394 | + WATCHTOWER_HANDLER = { |
| 395 | + "level": KOKU_LOGGING_LEVEL, |
| 396 | + "formatter": LOGGING_FORMATTER, |
| 397 | + "class": "watchtower.CloudWatchLogHandler", |
| 398 | + "log_group_name": CW_LOG_GROUP, |
| 399 | + "log_stream_name": POD_NAME, |
| 400 | + "use_queues": False, |
| 401 | + "boto3_client": cw_client, |
| 402 | + "create_log_group": False, |
| 403 | + "create_log_stream": True, # will create stream if it does not exist |
| 404 | + } |
| 405 | +else: |
| 406 | + print("CloudWatch not configured.") |
422 | 407 |
|
423 | 408 | LOGGING = {
|
424 | 409 | "version": 1,
|
425 | 410 | "disable_existing_loggers": False,
|
426 | 411 | "formatters": {
|
427 |
| - "verbose": {"()": "koku.log.TaskFormatter", "format": VERBOSE_FORMATTING}, |
428 |
| - "simple": {"()": "koku.log.TaskFormatter", "format": SIMPLE_FORMATTING}, |
| 412 | + "verbose": { |
| 413 | + "()": "koku.log.TaskFormatter", |
| 414 | + "format": VERBOSE_FORMATTING, |
| 415 | + }, |
| 416 | + "simple": { |
| 417 | + "()": "koku.log.TaskFormatter", |
| 418 | + "format": SIMPLE_FORMATTING, |
| 419 | + }, |
429 | 420 | },
|
430 | 421 | "handlers": {
|
431 |
| - "celery": {"class": "logging.StreamHandler", "formatter": LOGGING_FORMATTER}, |
432 |
| - "console": {"class": "logging.StreamHandler", "formatter": LOGGING_FORMATTER}, |
| 422 | + "celery": { |
| 423 | + "class": "logging.StreamHandler", |
| 424 | + "formatter": LOGGING_FORMATTER, |
| 425 | + }, |
| 426 | + "console": { |
| 427 | + "class": "logging.StreamHandler", |
| 428 | + "formatter": LOGGING_FORMATTER, |
| 429 | + }, |
433 | 430 | "file": {
|
434 | 431 | "level": KOKU_LOGGING_LEVEL,
|
435 | 432 | "class": "logging.FileHandler",
|
|
446 | 443 | "handlers": LOGGING_HANDLERS,
|
447 | 444 | "level": ENVIRONMENT.get_value("GUNICORN_LOG_LEVEL", default="DEBUG"),
|
448 | 445 | },
|
449 |
| - "django": {"handlers": LOGGING_HANDLERS, "level": DJANGO_LOGGING_LEVEL}, |
450 |
| - "api": {"handlers": LOGGING_HANDLERS, "level": KOKU_LOGGING_LEVEL}, |
451 |
| - "celery": {"handlers": LOGGING_HANDLERS, "level": KOKU_LOGGING_LEVEL, "propagate": False}, |
452 |
| - "cost_models": {"handlers": LOGGING_HANDLERS, "level": KOKU_LOGGING_LEVEL}, |
453 |
| - "forecast": {"handlers": LOGGING_HANDLERS, "level": KOKU_LOGGING_LEVEL}, |
454 |
| - "hcs": {"handlers": LOGGING_HANDLERS, "level": KOKU_LOGGING_LEVEL}, |
455 |
| - "kafka_utils": {"handlers": LOGGING_HANDLERS, "level": KOKU_LOGGING_LEVEL}, |
456 |
| - "koku": {"handlers": LOGGING_HANDLERS, "level": KOKU_LOGGING_LEVEL}, |
457 |
| - "providers": {"handlers": LOGGING_HANDLERS, "level": KOKU_LOGGING_LEVEL}, |
458 |
| - "reporting": {"handlers": LOGGING_HANDLERS, "level": KOKU_LOGGING_LEVEL}, |
459 |
| - "reporting_common": {"handlers": LOGGING_HANDLERS, "level": KOKU_LOGGING_LEVEL}, |
460 |
| - "masu": {"handlers": LOGGING_HANDLERS, "level": KOKU_LOGGING_LEVEL, "propagate": False}, |
461 |
| - "sources": {"handlers": LOGGING_HANDLERS, "level": KOKU_LOGGING_LEVEL}, |
462 |
| - "subs": {"handlers": LOGGING_HANDLERS, "level": KOKU_LOGGING_LEVEL}, |
| 446 | + "django": { |
| 447 | + "handlers": LOGGING_HANDLERS, |
| 448 | + "level": DJANGO_LOGGING_LEVEL, |
| 449 | + }, |
| 450 | + "api": { |
| 451 | + "handlers": LOGGING_HANDLERS, |
| 452 | + "level": KOKU_LOGGING_LEVEL, |
| 453 | + }, |
| 454 | + "celery": { |
| 455 | + "handlers": LOGGING_HANDLERS, |
| 456 | + "level": KOKU_LOGGING_LEVEL, |
| 457 | + "propagate": False, |
| 458 | + }, |
| 459 | + "cost_models": { |
| 460 | + "handlers": LOGGING_HANDLERS, |
| 461 | + "level": KOKU_LOGGING_LEVEL, |
| 462 | + }, |
| 463 | + "forecast": { |
| 464 | + "handlers": LOGGING_HANDLERS, |
| 465 | + "level": KOKU_LOGGING_LEVEL, |
| 466 | + }, |
| 467 | + "hcs": { |
| 468 | + "handlers": LOGGING_HANDLERS, |
| 469 | + "level": KOKU_LOGGING_LEVEL, |
| 470 | + }, |
| 471 | + "kafka_utils": { |
| 472 | + "handlers": LOGGING_HANDLERS, |
| 473 | + "level": KOKU_LOGGING_LEVEL, |
| 474 | + }, |
| 475 | + "koku": { |
| 476 | + "handlers": LOGGING_HANDLERS, |
| 477 | + "level": KOKU_LOGGING_LEVEL, |
| 478 | + }, |
| 479 | + "providers": { |
| 480 | + "handlers": LOGGING_HANDLERS, |
| 481 | + "level": KOKU_LOGGING_LEVEL, |
| 482 | + }, |
| 483 | + "reporting": { |
| 484 | + "handlers": LOGGING_HANDLERS, |
| 485 | + "level": KOKU_LOGGING_LEVEL, |
| 486 | + }, |
| 487 | + "reporting_common": { |
| 488 | + "handlers": LOGGING_HANDLERS, |
| 489 | + "level": KOKU_LOGGING_LEVEL, |
| 490 | + }, |
| 491 | + "masu": { |
| 492 | + "handlers": LOGGING_HANDLERS, |
| 493 | + "level": KOKU_LOGGING_LEVEL, |
| 494 | + "propagate": False, |
| 495 | + }, |
| 496 | + "sources": { |
| 497 | + "handlers": LOGGING_HANDLERS, |
| 498 | + "level": KOKU_LOGGING_LEVEL, |
| 499 | + }, |
| 500 | + "subs": { |
| 501 | + "handlers": LOGGING_HANDLERS, |
| 502 | + "level": KOKU_LOGGING_LEVEL, |
| 503 | + }, |
463 | 504 | # The following set the log level for the UnleashClient and Unleash cache refresh jobs.
|
464 | 505 | # Setting to WARNING will prevent the INFO level spam.
|
465 |
| - "UnleashClient": {"handlers": LOGGING_HANDLERS, "level": UNLEASH_LOGGING_LEVEL}, |
466 |
| - "apscheduler": {"handlers": LOGGING_HANDLERS, "level": UNLEASH_LOGGING_LEVEL}, |
| 506 | + "UnleashClient": { |
| 507 | + "handlers": LOGGING_HANDLERS, |
| 508 | + "level": UNLEASH_LOGGING_LEVEL, |
| 509 | + }, |
| 510 | + "apscheduler": { |
| 511 | + "handlers": LOGGING_HANDLERS, |
| 512 | + "level": UNLEASH_LOGGING_LEVEL, |
| 513 | + }, |
467 | 514 | },
|
468 | 515 | }
|
469 | 516 |
|
|
0 commit comments