如果使用django的settings.py设置日志会产生一些问题。

问题描述

报错信息如下:

Traceback (most recent call last):
File "C:\Python27\lib\logging\handlers.py", line 78, in emit
self.doRollover()
File "C:\Python27\lib\logging\handlers.py", line 141, in doRollover
os.rename(self.baseFilename, dfn)
WindowsError: [Error 32] The process cannot access the file because it is being used by another process

使用windows自带的资源管理器查看占用该文件的进程,在CPU标签页中搜索文件名即可:

可以发现有两个进程同时占用日志文件,打开任务管理器也能找到两个Python进程。如果杀死其中一个,另一个进程也会随之消失。

解决方法

python manage.py runserver --noreload
这个命令表示不启动监控文件变化的进程。

原因

Django默认启用两个进程,一个进程用来检测文件变化,另一个进程是正经的服务器进程。settting.py这个文件被加载了两次,也就是日志文件打开了两次,如果是服务器进程先启动,则看不出毛病来;如果是监控进程首先打开了从settings.py加载了日志,那么正经服务器进程就无法再次加载日志了。

代码

如果手动设置日志


from logging.handlers import TimedRotatingFileHandlerdef get_log():LOG_DIR = os.path.join(os.path.expanduser("~"), "json_manager", "logs")if not os.path.exists(LOG_DIR):os.mkdir(LOG_DIR)logHandler = TimedRotatingFileHandler(os.path.join(LOG_DIR, "crawler.log"),when='D',  # 以when为单位interval=3,  # 每个日志文件为interval个whenbackupCount=15,  # 保留15个whenencoding='utf8')logFormat = logging.Formatter("%(levelname)s %(asctime)s %(message)s")logHandler.setFormatter(logFormat)log = logging.getLogger("crawler")  # 日志只允许在当前进程中访问log.addHandler(logHandler)log.setLevel("INFO")return log

参考资料

Django logging with RotatingFileHandler error

转载于:https://www.cnblogs.com/weiyinfu/p/7886032.html

django日志使用TimeRotateFileHandler相关推荐

  1. Django日志模块配置

    django日志模块 日志模块工作流程 产生日志(日志实例) 渲染格式(格式化) 匹配过滤(过滤器) 持久化(处理器) 格式器formatter 关键词 描述 asctime 时间(2018-01-0 ...

  2. Django日志信息路径的设置

    django日志信息路径的设置, 因为我们经常在代码业务上线时候 需要进行调试,查看代码的后台运行情况,就需要设置django项目的具体的日志信息运维的路径了 LOGGING = {'version' ...

  3. django 日志配置

    django 日志配置 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'standard': ...

  4. python的日志模块:logging;django的日志系统;django日志输出时间修改

    Django的log,主要是复用Python标准库中的logging模块,在settings.py中进行配置 源代码 1.__init__.py包含以下类: StreamHandler Formatt ...

  5. django 日志多个服务连接_Django多进程日志文件问题

    Django多进程日志文件问题 最近使用Django做一个项目.在部署的时候发现日志文件不能滚动(我使用的是RotatingFileHandler),只有一个日志文件. 查看Log发现一个错误消息:P ...

  6. django 日志写入mysql_如何将django orm模型 写入数据库

    1.指定连接pymysql(python3.x) 先配置_init_.py import pymysql pymysql.install_as_MySQLdb() 2.配置连接mysql文件信息 se ...

  7. Django日志模块logging的配置详解

    转载:https://www.cnblogs.com/chenxuming/articles/9529128.html#autoid-1-3-0 转载于:https://www.cnblogs.com ...

  8. django 给单个文件加log_django配置日志模块

    上面截图是django中的日志配置,代码如下: import osBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__ ...

  9. python后台架构Django教程——日志系统

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python日志的相关内容可以先参考:http://blog.csdn.net/luanpeng825485697/article/detai ...

最新文章

  1. Tomcat 源码阅读记录(1)
  2. 如何实现一个定时的任务,并且可以自己停止
  3. python连接opencv库_python环境下安装opencv库的方法
  4. 剑指Offer - 九度1511 - 从尾到头打印链表
  5. ECsoop 商品列表页属性筛选区品牌以LOGO形式显示
  6. 微型计算机与接口技术考试题,微机原理与接口技术试题库2
  7. java与java ee_Java EE 7社区调查结果!
  8. 给matlab图加图注,matlab学习5-数据可视化4-gai.ppt
  9. 【第149期】游戏策划:给@Dimitri的简历分析
  10. 史上最全SpringCloud2.0视频教程
  11. win7 蓝屏:stop 0x0000006b解决方法
  12. PCI/PCIE相关知识
  13. CAD二开之打开时插件命令自动加载(RibbonUI自动显示)
  14. QuickCam Gev 2.0 开发
  15. python开启摄像头以及深度学习实现目标检测
  16. python利用turtle库绘制正方形绕一个顶点旋转
  17. linux命令格式和常用命令
  18. springcloud+fastdfs在docker中设置防盗链
  19. 最短路径—— Til the Cows Come Home
  20. w ndows7旗舰版怎么重装系统,windows7旗舰版安装包下载到手机的操作方法步骤教程 - 系统家园...

热门文章

  1. 《DSP using MATLAB》Problem 6.6
  2. 在控制台中操作MYSQL数据库步骤以及一些小问题
  3. 数据库优化之mysql【转】
  4. Java Reflect
  5. 使用 Intel HAXM 为 Android 模拟器加速,媲美真机
  6. ArcEngine中shp中先加入要素然后删除一部分要素后,放大图形后不显示的问题解决方法...
  7. Perl文件处理示例——批量添加Copyright版权信息
  8. xml 导入SQL Server 2005
  9. 网络信息安全实验 — 网络攻击技术实验(Kali系统,John、lc7、arpspoof、ettercap、SQL注入...)
  10. 心得总结:一名优秀的数据分析专家的能力模型