Django+python 日志文件配置
来源:互联网 发布:中国项目数据分析师网 编辑:程序博客网 时间:2024/04/29 20:15
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">原文链接:http://www.yihaomen.com/article/python/262.htm</span>
项目的开发过程中,日志文件是少不了的,通过写日志文件,可以知道程序运行的情况。特别当部署在生产环境中的时候,这个时候一般不能debug , 当然在有些情况时可以 remote debug (远程debug)。那种情况另当别论。还是用通常的写日志的方法,比如在 java 中,经常可以看到 log4j,sf4j,logback等三方组件来写日志。
在python中如何实现呢,其实python 本身也带了日志操作的库。可以直接使用。这里我把在项目中用到的整理了一下,分享在下面,这个实现的方法,主要有两点1. 写日志的类
2.日志配置文件(handler,logger,以及日志保存的路径等)
有两种配置方式:
1.配置文件实现,他的优点是配置模块化,减少了项目的耦合性。
logger.ini文件代码:
[loggers]keys=root,mysql,socket[handlers]keys=consoleHandler,rotateFileHandler[formatters]keys=simpleFormatter[formatter_simpleFormatter]format= [%(asctime)s][%(levelname)s][%(message)s][%(filename)s:%(lineno)d] [logger_root]qualname=rootlevel=DEBUGhandlers=consoleHandler,rotateFileHandler[logger_mysql]qualname=mysqllevel=DEBUGhandlers=rotateFileHandler[logger_socket]qualname=socketlevel=ERRORhandlers=rotateFileHandler[handler_consoleHandler]class=StreamHandlerlevel=DEBUGformatter=simpleFormatterargs=(sys.stdout,)[handler_rotateFileHandler]class=handlers.RotatingFileHandlerlevel=DEBUGformatter=simpleFormatterargs=('e:/logs/mapshow.log', 'a', 2000000, 9)
如果你用了 handler_rotateFileHandler 的话,这样日志就会保存到 才e:/logs/mapshow.log 文件里面,而且当日志超过2000000 d的时候,重新另外生成一个文件,保存9天的记录,你可以配置成30,这样就保存了最近一个月的日志记录。
#!-*-coding:utf-8 -*-import osimport logging.configclass INetLogger(): log_instance = None @staticmethod def InitLogConf(): currentDir=os.path.dirname(__file__) INetLogger.log_instance = logging.config.fileConfig(currentDir+os.path.sep+"logger.ini") @staticmethod def GetLogger(name = ""): if INetLogger.log_instance == None: INetLogger.InitLogConf() INetLogger.log_instance = logging.getLogger(name) return INetLogger.log_instance
调用程序:views视图代码:
logger = Logger.GetLogger("root")logger.info(req.user.username+"--"+req.path+"--"+str(resp.status_code)+"--date:"+ydate)
2.在Django项目的settings文件中编写配置代码:
原文链接:http://www.yihaomen.com/article/python/321.htm
LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': { 'standard': { 'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(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': os.path.join(STATIC_ROOT+'/logs/','all.log'), #或者直接写路径:'c:\logs\all.log', 'maxBytes': 1024*1024*5, # 5 MB 'backupCount': 5, 'formatter':'standard', }, 'console':{ 'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'standard' }, 'request_handler': { 'level':'DEBUG', 'class':'logging.handlers.RotatingFileHandler', 'filename': os.path.join(STATIC_ROOT+'/logs/','script.log'), #或者直接写路径:'filename':'c:\logs\request.log'' 'maxBytes': 1024*1024*5, # 5 MB 'backupCount': 5, 'formatter':'standard', }, 'scprits_handler': { 'level':'DEBUG', 'class':'logging.handlers.RotatingFileHandler', 'filename': os.path.join(STATIC_ROOT+'/logs/','script.log'), #或者直接写路径:'filename':'c:\logs\script.log' 'maxBytes': 1024*1024*5, # 5 MB 'backupCount': 5, 'formatter':'standard', }, }, 'loggers': { 'django': { 'handlers': ['default','console'], 'level': 'DEBUG', 'propagate': False }, 'XieYin.app':{ 'handlers': ['default','console'], 'level': 'DEBUG', 'propagate': True }, 'django.request': { 'handlers': ['request_handler'], 'level': 'DEBUG', 'propagate': False }, 'scripts': { # 脚本专用日志 'handlers': ['scprits_handler'], 'level': 'INFO', 'propagate': False }, }}下面专门讲解一下: 其实这个配置与python 传统的logging 很类似.
formatters 用来配置 日志打印的格式
handlers ,用来定义具体处理日志的方式,可以定义很多种,"default" 就是默认方式,"console" 就是打印到控制台方式.
loggers 是用来配置用哪几种 handlers 来处理日志,比如你同时需要输出日志到文件,和到控制台,那就必须配置 两种handlers. 在上面的例子中 'XieYin.app" 是典型的例子.
有一点必须注意的是 loggers 类型 为"django" 这将处理所有类型的日志.
另外 为什么我配置了一个 'XieYin.app' 的logger,这是因为 django 会根据包的层次结构去找 应该用那个 logger 来处理日志,如果找不到,就不输出日志,而我的项目要输出日志的views.py 都是是放在 XieYin.app 下面的。而且当系统查找是否配置有相应的logger的时候,如果本身这个module 没有logger ,就查找父类是否有logger。
0 0
- Django+python 日志文件配置
- Python(三)Django静态文件配置
- django/python日志logging 的配置以及处理
- python django日志器的使用及配置
- django 日志配置
- django日志配置
- django日志配置
- django日志配置
- django 日志配置
- Django日志配置
- django如何添加logging日志模块--配置多个日志文件
- django 日志配置和使用
- Python+Django+Nginx配置
- python django环境配置
- python django环境变量配置
- python django环境配置
- python-django文件上传
- Python-Django-静态文件
- CSDN markdown 常用快捷键
- 软件知识汇总
- Logstash自带正则表达式
- 仿造微信界面左右拖拽的UI
- 使用VC++类库进行数值分析
- Django+python 日志文件配置
- SQL 游标
- servlet
- 图片Uri,从其中获取到图片路径。
- CentOS Linux解决Device eth0 does not seem to be present
- eclipse 遇到 exit code = 13 , count find java_home解决方案
- uva 1218 Perfect Service 树形dp
- memcached性能测试 twemperf
- 安卓开发之 Intent的介绍