Я пытался отправить журналы в локальный контейнер Docker внутри Dagster Unit/Integration Test со следующими конфигурациями:
Для пользовательского средства ведения журнала:
@logger(
{
"name": Field(str, is_required=False, default_value="dagster"),
"log_level": Field(str, is_required=False, default_value="DEBUG"),
"log_group_name": Field(str, description="The name of the log group"),
"log_stream_name": Field(
str, description="The prefix of the log stream name"
),
},
description="A CloudWatch console logger.",
)
def cloudwatch_logger(init_context: "InitLoggerContext"):
"""Logger that emits dagster logs to AWS CloudWatch.
Parameters
----------
init_context : InitLoggerContext
Returns
-------
logging.Logger
"""
level = coerce_valid_log_level(init_context.logger_config["log_level"])
name = init_context.logger_config["name"]
logger_class = logging.getLoggerClass()
logger = logger_class(name, level=level)
handler = CloudwatchLogsHandler(
init_context.logger_config["log_group_name"],
init_context.logger_config["log_stream_name"],
level=level,
)
handler.setFormatter(JsonLogFormatter())
logger.addHandler(handler)
return logger
Файл conftest.py:
import pytest
import subprocess
import os
import boto3
import logging
from enum import IntEnum
@pytest.fixture(scope="session", autouse=True)
def initialize_localstack():
subprocess.run(
[
"docker-compose",
"up",
"localstack-service",
"-d",
"--build"
]
)
yield
subprocess.run(
[
"docker",
"rm",
"-f",
"localstack-service"
]
)
@pytest.fixture(scope="session", autouse=False)
def cloud_client(initialize_localstack):
# TODO: Obtain the environment variables using the 'settings' module.
cloudwatch_client = boto3.client(
"logs",
endpoint_url=os.environ.get("AWS__ENDPOINT_URL"),
region_name=os.environ.get("AWS__REGION_NAME"),
)
LOG_GROUP = "dagster-test-log-group"
LOG_STREAM = "dagster-test-log-stream"
try:
cloudwatch_client.create_log_group(logGroupName=LOG_GROUP)
cloudwatch_client.create_log_stream(
logGroupName=LOG_GROUP,
logStreamName=LOG_STREAM
)
except cloudwatch_client.exceptions.ResourceAlreadyExistsException:
pass
yield cloudwatch_client
cloudwatch_client.delete_log_stream(
logGroupName=LOG_GROUP,
logStreamName=LOG_STREAM
)
cloudwatch_client.delete_log_group(
logGroupName=LOG_GROUP
)
Файл tests.py:
def test_dummy_op(cloud_client):
context = build_init_logger_context(logger_config={
"name": "dagster-logger",
"log_level": "DEBUG",
"log_group_name": "dagster-test-log-group",
"log_stream_name": "dagster-test-log-stream",
}
)
test_logger = cloudwatch_logger(context)
test_logger.info("Hello from inside the test!")
Странная часть этого процесса заключается в том, что когда я запускаю Сервер Dagster, запускаю и op при такой конфигурации регистратора журналы успешно отправляются в CloudWatch, но когда я пытаюсь протестировать эти журналы в рамках предыдущего модульного теста, команда:
awslocal logs filter-log-events --log-group-name dagster-test-log-group
Возвращает ноль событий:
{
"events": [],
"searchedLogStreams": [
{
"logStreamName": "dagster-test-log-stream",
"searchedCompletely": true
},
{
"logStreamName": "dagster-test-log-stream/323032352d30312d30382d3136",
"searchedCompletely": true
}
]
}```
What's happening in here?
Подробнее здесь: https://stackoverflow.com/questions/793 ... sing-local
Регистратор, подключенный к CloudWatch, не работает при попытке отправить журналы с помощью localstack внутри модульного ⇐ Python
Программы на Python
1736375370
Anonymous
Я пытался отправить журналы в локальный контейнер [b]Docker[/b] внутри [b]Dagster Unit/Integration Test[/b] со следующими конфигурациями:
Для [b]пользовательского средства ведения журнала:[/b]
@logger(
{
"name": Field(str, is_required=False, default_value="dagster"),
"log_level": Field(str, is_required=False, default_value="DEBUG"),
"log_group_name": Field(str, description="The name of the log group"),
"log_stream_name": Field(
str, description="The prefix of the log stream name"
),
},
description="A CloudWatch console logger.",
)
def cloudwatch_logger(init_context: "InitLoggerContext"):
"""Logger that emits dagster logs to AWS CloudWatch.
Parameters
----------
init_context : InitLoggerContext
Returns
-------
logging.Logger
"""
level = coerce_valid_log_level(init_context.logger_config["log_level"])
name = init_context.logger_config["name"]
logger_class = logging.getLoggerClass()
logger = logger_class(name, level=level)
handler = CloudwatchLogsHandler(
init_context.logger_config["log_group_name"],
init_context.logger_config["log_stream_name"],
level=level,
)
handler.setFormatter(JsonLogFormatter())
logger.addHandler(handler)
return logger
Файл [b]conftest.py[/b]:
import pytest
import subprocess
import os
import boto3
import logging
from enum import IntEnum
@pytest.fixture(scope="session", autouse=True)
def initialize_localstack():
subprocess.run(
[
"docker-compose",
"up",
"localstack-service",
"-d",
"--build"
]
)
yield
subprocess.run(
[
"docker",
"rm",
"-f",
"localstack-service"
]
)
@pytest.fixture(scope="session", autouse=False)
def cloud_client(initialize_localstack):
# TODO: Obtain the environment variables using the 'settings' module.
cloudwatch_client = boto3.client(
"logs",
endpoint_url=os.environ.get("AWS__ENDPOINT_URL"),
region_name=os.environ.get("AWS__REGION_NAME"),
)
LOG_GROUP = "dagster-test-log-group"
LOG_STREAM = "dagster-test-log-stream"
try:
cloudwatch_client.create_log_group(logGroupName=LOG_GROUP)
cloudwatch_client.create_log_stream(
logGroupName=LOG_GROUP,
logStreamName=LOG_STREAM
)
except cloudwatch_client.exceptions.ResourceAlreadyExistsException:
pass
yield cloudwatch_client
cloudwatch_client.delete_log_stream(
logGroupName=LOG_GROUP,
logStreamName=LOG_STREAM
)
cloudwatch_client.delete_log_group(
logGroupName=LOG_GROUP
)
Файл [b]tests.py[/b]:
def test_dummy_op(cloud_client):
context = build_init_logger_context(logger_config={
"name": "dagster-logger",
"log_level": "DEBUG",
"log_group_name": "dagster-test-log-group",
"log_stream_name": "dagster-test-log-stream",
}
)
test_logger = cloudwatch_logger(context)
test_logger.info("Hello from inside the test!")
Странная часть этого процесса заключается в том, что когда я запускаю [b]Сервер Dagster[/b], запускаю и [b]op[/b] при такой конфигурации регистратора журналы успешно отправляются в CloudWatch, но когда я пытаюсь протестировать эти журналы в рамках предыдущего модульного теста, команда:
awslocal logs filter-log-events --log-group-name dagster-test-log-group
Возвращает [b]ноль событий[/b]:
{
"events": [],
"searchedLogStreams": [
{
"logStreamName": "dagster-test-log-stream",
"searchedCompletely": true
},
{
"logStreamName": "dagster-test-log-stream/323032352d30312d30382d3136",
"searchedCompletely": true
}
]
}```
What's happening in here?
Подробнее здесь: [url]https://stackoverflow.com/questions/79340919/logger-connected-to-cloudwatch-doesnt-work-when-trying-to-send-logs-using-local[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия