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()

