강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của bluebamus
bluebamus

câu hỏi đã được viết

Celery cùng kỹ sư Thung lũng Silicon

Giải quyết lỗi Task bằng Signal

celery의 로그 설정을 django의 settings.py에서 따로 해줘야 하는게 있을까요?

Viết

·

343

·

Đã chỉnh sửa

1

django의 logger를 사용해 log를 출력하는 경우

CELERYD_HIJACK_ROOT_LOGGER = False를 해줘야 하는지요?

celery의 동작과 관련한 모든 기본 출력을 django log에 함께 출력하는 방법이 있는지도 알고 싶습니다.

djangocelerydjango-celerydjango-celery-beat

Câu trả lời 1

0

altoformula님의 프로필 이미지
altoformula
Người chia sẻ kiến thức

안녕하세요 bluebamus님,

저는 보통 Celery를 k8s에서 각각의 worker pod으로 사용하고, Splunk나 다른 Log fowarder를 사용해 왔었는데, 인터넷에 찾아보니, 이런 자료들이 있네요.

말씀하신대로 CELERYD_HIJACK_ROOT_LOGGER를 False로 설정하면 Celery가 기본 logger를 가져가서 사용하지 않습니다. 이를 통해 Django의 기본 로거 설정을 유지할 수 있습니다. 이 설정이 없으면 Celery가 root logger를 가로채서 Celery 자체의 로거로 사용하게 됩니다.

다음과 같이 사용하시면 될 듯 합니다.

# settings.py
CELERYD_HIJACK_ROOT_LOGGER = False

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
        },
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': 'django_celery.log',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console', 'file'],
            'level': 'DEBUG',
            'propagate': True,
        },
        'celery': {
            'handlers': ['console', 'file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

# celery.py
import logging.config
from django.conf import settings

logging.config.dictConfig(settings.LOGGING)

app = Celery('your_project_name')

# your existing Celery settings

# Ensure the logging configuration is used by Celery
app.conf.update(
    worker_hijack_root_logger=False,
)
bluebamus님의 프로필 이미지
bluebamus
Người đặt câu hỏi

감사합니다. 덕분에 좋은 지식을 얻었습니다 ^^

Hình ảnh hồ sơ của bluebamus
bluebamus

câu hỏi đã được viết

Đặt câu hỏi