万里长征第二步——django个人博客(第二步 ——日志记录器)
2024-08-27 09:31:06
- 定义日志记录器
- 可以在setting.py里设置日志记录器
# 自定义日志输出信息
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'standard': {
'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'} #日志格式
},
'filters': {
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler',
'include_html': True,
},
'default': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': 'log/all.log', #日志输出文件
'maxBytes': 1024*1024*5, #文件大小
'backupCount': 5, #备份份数
'formatter':'standard', #使用哪种formatters日志格式
},
'error': {
'level':'ERROR',
'class':'logging.handlers.RotatingFileHandler',
'filename': 'log/error.log',
'maxBytes':1024*1024*5,
'backupCount': 5,
'formatter':'standard',
},
'console':{
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'standard'
},
'request_handler': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': 'log/script.log',
'maxBytes': 1024*1024*5,
'backupCount': 5,
'formatter':'standard',
},
'scprits_handler': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename':'log/script.log',
'maxBytes': 1024*1024*5,
'backupCount': 5,
'formatter':'standard',
}
},
'loggers': {
'django': {
'handlers': ['default', 'console'],
'level': 'DEBUG',
'propagate': False
},
'django.request': {
'handlers': ['request_handler'],
'level': 'DEBUG',
'propagate': False,
},
'scripts': {
'handlers': ['scprits_handler'],
'level': 'INFO',
'propagate': False
},
'blog.views': {
'handlers': ['default', 'error'],
'level': 'DEBUG',
'propagate': True
},
}
} - 在views.py里调用日志记录器
import logging #调用日志记录器
from django.shortcuts import render logging = logging.getLogger('blog.views') #调用日志器中的 'blog.views' 函数 # Create your views here.
def index(request):
try:
file = open('sss.txt','r') #打开一个不存在的文件
except Exception as e:
logging.error(e) #捕获错误,记录入日志中
return render(request, 'index.html', locals())
最新文章
- AngularJs之四(作用域)
- CSS 优先级判断
- (Hibernate进阶)Hibernate映射——一对一双向关联映射(六)
- bzoj2565: 最长双回文串
- Hive 按某列的部分排序 以及 删列操作
- 基于Maven引入Hadoop包报Missing artifact jdk.tools:jdk.tools:jar:1.6
- Linux 信号捕捉
- BZOJ1109 : [POI2007]堆积木Klo
- 前端异步解决方案——mmDeferred
- 重要性!important
- Android String 转 MD5
- java正则表达式去除html标签
- MyEclipse取消Show in Breadcrumb的方法
- VC常用数据类型使用转换详解
- 安装vue-cli时出现的错误,cmd 卡住
- Jmeter3.2默认自带的HTML报告
- jQuery 第六章 jQuery在Ajax应用
- 删除倒数第k个元素
- Shiro学习
- 一个简单的TensorFlow可视化MNIST数据集识别程序
热门文章
- mui 怎样监听scroll事件的滚动距离
- Context-Aware Network Embedding for Relation Modeling
- DOM编程艺术读书笔记 (须熟读)
- 如何测试一台主机的IP和端口是否能连通,ping telnet
- 简写代码:当变量为false时['',false,null,undefined,0,NaN]时,返回默认值
- 怎么WordPress增加在线投稿功能
- android studio 入门比较好的书籍
- 解决Gradle报错找不到org.gradle.api.internal.project.ProjectInternal.getPluginManager()方法问题
- 使用Gradle管理第三方依赖
- C++ 取整数学函数