zoukankan      html  css  js  c++  java
  • 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()
    

      

  • 相关阅读:
    图(个人复习专用)
    树(复习用)
    由后序遍历与中序遍历确定前序遍历
    网络流问题
    无向图的结合点
    有向图的强连通分量
    最短路径Shortest Path algorithm
    【转】Vector与ArrayList区别
    Java中compareto的用法。
    Java中的Integer和int等包装类和基本数据类型简单比较
  • 原文地址:https://www.cnblogs.com/du-jun/p/10556985.html
Copyright © 2011-2022 走看看