【问题标题】:logging file does not exist when running in celery在 celery 中运行时日志文件不存在
【发布时间】:2017-09-12 08:58:09
【问题描述】:

首先,对不起,我的英语水平太低了

我创建了一个学习网站

我使用 django + redis + celery 创建了发送短信功能

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)

items/utils.py

import os
import requests
import json


class SendSMS():

    def send_sms(self, buyer_nickname, buyer_phone, saler_phone, selected_bookname):
        appid = [...]
        apikey = [...]

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

        content = '...'

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

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

        return params

当我使用我的代码发送短信时,它没有问题

[2017-09-12 17:20:43,532: WARNING/Worker-6] Task success

当用户单击“发送短信按钮”时,我想制作日志文件并插入日志“成功发送短信”

wef/wef/decorators.py

from django.utils import timezone
import logging

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))
        print(logging)
        return func(self, *args, **kwargs)
    return wrap_func

但是当我点击“发送短信”按钮时任务正常,但是没有创建日志文件...

所以我想知道“问题是什么?”

我更改了我的代码create logfile -> print log

wef/wef/decorators.py

from django.utils import timezone

def log_decorator(func):

    def wrap_func(self, *args, **kwargs):
        time_stamp = timezone.localtime(timezone.now()).strftime('%Y-%m-%d %H:%M')
        ## print log
        print('[{}] succes send sms'.format(timestamp))
        ## print log
        return func(self, *args, **kwargs)
    return wrap_func

当我点击“发送短信按钮”时,芹菜中的日志打印

我很困惑,因为 print() 工作但创建日志文件不起作用...

我认为我的代码(创建日志文件)没有问题,因为当我练习不使用 django、celery、redis 创建日志文件时,日志文件创建成功

相同的代码,相同的功能,但在 django 和 celery 中不起作用

请给我一些建议谢谢

【问题讨论】:

    标签: python django logging


    【解决方案1】:

    我猜你必须添加类似的记录器 -

    # import the logging library
    import logging
    
    # Get an instance of a logger
    logger = logging.getLogger(__name__)
    
    def my_view(request, arg1, arg):
        ...
        if bad_mojo:
            # Log an error message
            logger.error('Something went wrong!')
    

    这里我假设您已经配置了记录器、处理程序、过滤器和格式化程序

    欲了解更多信息,请访问URL

    【讨论】:

      猜你喜欢
      • 2016-08-30
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 2019-07-27
      相关资源
      最近更新 更多