django-celery 에서 실행되는 함수에 로그파일을 만드는 데코레이터를 추가하려합니다.

조회수 1038회

연습용으로 웹사이트를 만들어서 버튼 클릭 시 문자를 전송하는 기능을 구현했습니다.

저는 이 기능에 사용자가 몇 시에 버튼을 클릭했는지 기록하는 로그파일을 만들고자 합니다.

tasks/send_buy_sms.py

from celery import Task
from items.utils import SendSMS

class SendBuyMessageTask(Task):

    def run(self, buyer_nickname, buyer_phone, saler_phone, selected_bookname):
        sms = SendSMS()
        sms.send_sms(buyer_nickname, buyer_phone, saler_phone, selected_bookname)

해당 코드는 celery와 redis를 이용해 비동기적으로 문자를 전송하는 기능을 만들었습니다.

import os
import requests
import json


class SendSMS():

    def send_sms(self, buyer_nickname, buyer_phone, saler_phone, selected_bookname):

       sender = '...'
        receivers = [saler_phone, ]

    content = '...'

    url = os.environ.get("URL")

    params = {
        'sender': sender,
        'receivers': receivers,
        'content': content,
    }
    headers = {...}
    r = '...'
    return params

해당기능은 task에서 실행될 함수 입니다.

사용자가 '문자전송'버튼을 클릭할 경우 정상적으로 문자전송이 정상적으로 작동합니다.

이미지

그리고 저는 여기에 데코레이터를 만들어 함수가 실행될때 로그가 입력되게 만들려고 합니다.

from django.utils import timezone

def log_decorator(func):

    logging.basicConfig(filename='../../sendsms.log', level=logging.INFO)
    def wrap_func(self, *args, **kwargs):
        time_stamp = timezone.localtime(timezone.now()).strftime('%Y-%m-%d %H:%M')
        logging.info('[{}] success send SMS'.format(time_stamp))
        return func(self, *args, **kwargs)
    return wrap_func

그리고 데코레이터를 추가하여(@log_decorator) 작동시켜보았으나 문자는 제대로 날아오는데 로그파일이 생성되지 않았습니다.

로그파일 생성에 대한 연습은 해당링크에서 공부하고 나서 프로잭트에 적용한 것인데 연습할 때는 로그파일이 문제없이 생성되었으나 제 사이트에 적용하는데 작동을 하지 않았습니다.

혹시 제 코드에 문제가 있나 싶어서 logginf.info()코드 밑에 print()를 넣어서 작동하는지 여부를 확인하였는데 print가 뜨긴 했으나 celery안에서 뜨는 것이 확인 되었습니다.

이미지

print는 되는데 로그파일만 안되는게 이상해서 방법을 찾아도 어떻게해야할지 도저히 모르겠습니다.. 다른분들의 조언을 구하고 싶습니다. 감사합니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)