django日志,django-crontab,django邮件模块

 django 日志

四大块,格式器,过滤器,处理器,日志管理器

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {# 日志格式
       'standard': {
            'format': '%(asctime)s [%(threadName)s:%(thread)d] '
                      '[%(pathname)s:%(funcName)s:%(lineno)d] [%(levelname)s]- %(message)s'}
    },
    'filters': {# 过滤器
        'test':{
            '()': 'ops.TestFilter'
        }
    },
    'handlers': {# 处理器
        'null': {
            'level': 'DEBUG',
            'class': 'logging.NullHandler',
        },
        'error_handler': {# error内容输出到另外的文件
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(LOG_DIR,'error.log'),#日志输出文件
            'maxBytes':1024*1024*5,#文件大小
            'backupCount': 5,#备份份数
            'formatter':'standard',#使用哪种formatters日志格式
            'encoding': 'utf8',
        },
        'file_handler': {# 记录到日志文件(需要创建对应的目录,否则会出错)
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(LOG_DIR,'service.log'),# 日志输出文件
            'maxBytes':1024*1024*5,#文件大小
            'backupCount': 5,#备份份数
            'formatter':'standard',#使用哪种formatters日志格式
                'encoding': 'utf8',
        },
        'console_handler':{# 输出到控制台
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'standard',
        },
    },
    'loggers': {# logging管理器
        'django': {
            # 'handlers': ['console_handler', 'file_handler', 'error_handler'],
            'handlers': ['console_handler', 'file_handler'],
            'filters': ['test'],
            'level': 'DEBUG'
        }
    }
}
import os
import django
import logging

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
django.setup()


def logger_demo():
    logger = logging.getLogger('django')
    logger.info('hello world')
    logger.info('hello world [FILTER FLAG]')

    logger.debug('debug message')

    logger.error('error message')


if __name__ == '__main__':
    logger_demo()

  

django-crontab 在win中不可用

crontab

https://lupython.gitee.io/2017/10/08/%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1/

crontab 在django中提交给linux服务器使用
安装
pip3 install django-crontab


配置setting中增加app:django_crontab
#每一分钟执行一次
CRONJOBS = [
('*/1 * * * *', 'cron.jobs.demo')
]

'0 12 * * *', 'cron.jobs.demo' #每天12点整执行一次
'0 12 * * 1-5', 'cron.jobs.demo' #周一到周五每天12点整执行一次

 在cron文件夹下jobs.py 添加demo函数,放执行代码

也可以添加打印到log:

import logging

logger=logging.getLogger('django')

demo函数中最后放入logger.info(打印内容)


linux中查看crontab :
python3 manage.py crontab show
或者查看系统是否有定时任务:crontab -l
crontab -e 查看详细
linux中添加crontab :
python3 manage.py crontab add
除了show,add以及还有remove/run命令

打印django日志
cd log/
ls
tail -f service.log

django邮件模块


简单邮件传输协议simple mail transfer protocol
smtp服务使用tcp端口25,加密通道端口是465
使用QQ邮箱smtp服务需要授权码

qq邮箱setting-开启服务:IMAP/SMTP服务
授权码:gwmwrhyhdtynbhag

django-settings中配置

# Email config
# QQ邮箱 SMTP 服务器地址
EMAIL_HOST = 'smtp.qq.com'
# 端口
EMAIL_PORT = 465
# 发送邮件的邮箱
EMAIL_HOST_USER = 'dujun31@vip.qq.com'
# 在邮箱中设置的客户端授权密码
EMAIL_HOST_PASSWORD = 'gwmwrhyhdtynbhag'
# 开启TLS
EMAIL_USE_TLS = True
# 收件人看到的发件人
EMAIL_FROM = 'dujun31@vip.qq.com'

django测试列子

import os
import django
import smtplib
from backend import settings

from email.mime.text import MIMEText


os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
django.setup()


def send_mail():
    msg = MIMEText("邮件通道测试", "plain", "utf-8")
    msg['FROM'] = "Mail Test"
    msg['Subject'] = "【Mail Test】"
    receivers = ['349553119@qq.com']
    server = smtplib.SMTP_SSL(settings.EMAIL_HOST, settings.EMAIL_PORT)
    server.set_debuglevel(1)
    server.login(settings.EMAIL_HOST_USER, settings.EMAIL_HOST_PASSWORD)
    server.sendmail(settings.EMAIL_FROM, receivers, msg.as_string())
    server.close()
    pass


if __name__ == '__main__':
    send_mail()

  

原文地址:https://www.cnblogs.com/du-jun/p/10556985.html