实际应用中遇到TimedRotatingFileHandler不滚动的问题
需求:
程序每天晚上8点和10点定时运行,期望日志按日期记录
添加Handler部分代码如下:
formatter = logging.Formatter("%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s", "%Y-%m-%d %H:%M:%S")
log_file_handler = logging.handlers.TimedRotatingFileHandler(filename="loaddata.log", when="D", interval=1, backupCount=30)
log_file_handler.setFormatter(formatter)
logging.getLogger().addHandler(log_file_handler)
查看过很多资料,代码并没有问题
现象:
只有一个日志(loaddata.log)文件被生成,其中会有所有天的日志,期望的loaddata.log.YYYY-mm-dd并没有看到
研究:
追查代码,看到handlers.py(Python自带模块)中是这样计算日志文件重新生成时间的
下面的 result 是下一次rollover的时间,上面的 t 是handler初始化时获取的起始时间。
可以看到logging模块得到的结果是这样的:
- 起始时间 = 日志文件的最后修改时间
- 下次滚动时间 = 起始时间 + 1天(因为我设置的when='D')
又因为,我每天要在20点和22点各执行一次,并且每次都有日志写入。因此:
- 20点执行时,起始时间 = 昨天晚上22点;下次滚动时间 = 昨天22点 + 1天 = 今天22点。所以不滚动
- 22点执行时,起始时间 = 今天20点;下次滚动时间 = 今天20点 + 1天 = 明天20点。所以不滚动
所以:导致的结果就是。。。永远不滚动!/(ㄒoㄒ)/~~
解决办法:
创建Handler时,把when='D'改成when='MIDNIGHT'可解决这个问题。因为MIDNIGHT指的是,只要过了0点就会滚动。
实际应用中遇到TimedRotatingFileHandler不滚动的问题的更多相关文章
- css3中webkit内核的滚动栏样式
项目其中用到的滚动栏样式,在别人的基础上调成适合自己的样式.(IE能够调试滚动栏样式,firefox眼下不能调试) ::-webkit-scrollbar { width: 14px; }/* Tra ...
- ios中iframe的scroll滚动事件替代方法
在公众号的开发中,遇到ios中iframe的scroll滚动事件失效,在此做下记录. 因为接口获取的数据必须放在iframe中展示,滚动到底部按钮变亮,如图: 代码如下: <!DOCTYPE h ...
- vue中监听页面滚动和监听某元素滚动
①监听页面滚动 在生命周期mounted中进行监听滚动: mounted () { window.addEventListener('scroll', this.scrollToTop) }, 在方法 ...
- APP中常见上下循环滚动通知的简单实现,点击可进入详情
APP中常见上下循环滚动通知的简单实现,点击可进入详情 关注finddreams博客,一起分享一起进步!http://blog.csdn.net/finddreams/article/details/ ...
- ListView组件中 onEndReached 方法在滚动到距离列表最底部一半时执行
初次使用ListView,在写列表滚动到最底部自动加载使用到方法onEndReached, 发现: ListView组件中 onEndReached 方法在滚动到距离列表最底部一半时执行, 于是翻看文 ...
- JAVA 如何使JScrollPane中的JTextArea自动滚动到最后一行?
1.要使JTextArea带有滚动条,需将JTextArea对象添加到JScrollPane中. JTextArea logArea = new JTextArea(15, 35); //创建JTex ...
- Android TabHost中实现标签的滚动以及一些TabHost开发的奇怪问题
最近在使用TabHost的时候遇到了一些奇怪的问题,在这里总结分享备忘一下. 首先说一点TabActivity将会被FragmentActivity所替代,但是本文中却是使用的TabActivity. ...
- vc 在edit控件中动态插入数据滚动显示
内存从网上论坛摘抄整理 思路:给控件设置多行属性,设置垂直滚动条,Auto Vscroll设置为true,放入文本后把插入点设置到末尾 pEdit->LineScroll(pEdit->G ...
- ListCtrl中垂直滚动条自动滚动
在用ListCtrl控件时,当向该控件中添加数据时,怎么样可以把滚动条时时滚动到最后一行,这样便可看到添加的新数据内容 1 加完数据后执行 EnsureVisible(最后一行索引) 可以保证滚动到最 ...
随机推荐
- 利用Dropbox同步Arch下一些软件的配置文件
一些软件后要好好的配置一番才能好好为自己所用,比如vim,比如conky等等,但是万一系统真出了问题,或者硬盘跪了,要重新安装系统重新配置的时候真是一种折磨,前阵子想到如果用dropbox同步那些配置 ...
- Java正则表达式详解+练习
一.导读 正则表达式,又称规则表达式.(英文名Regular Expression,所以代码中常以regex.regexp.RE表示).正则表达式简单说就是用于操作文本数据的规则表达式,在Java中我 ...
- Ubuntu16.04卸载opencv2.4.9并安装opencv3.2.0+contrib
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 需要用到opencv中的surf和sift算法,机器上只有opencv3.2,没有扩展包,于是 ...
- 老生常谈:关于undo表空间的使用率
就在前几天,又有一个客户向我咨询undo表空间使用率的问题. 这让我想起几年前曾经有个省份的案例,客户的实际运维人员是一位刚毕业不久的女孩,几乎不懂Oracle原理,项目经理交给她的任务也是基础运维工 ...
- hibernate的session详解
- 微信小程序图片放大预览
需求:当点击图片时,当前图片放大预览,且可以左右滑动 实现方式:使用微信小程序图片预览接口 我们可以看到api需要两个参数,分别通过下面的data-list和data-src来传到js中 wxml代码 ...
- win10 安装Node.js 报错:2503
解决方法: 使用管理员打开CMD
- Python基础学习参考(一):python初体验
一.前期准备 对于python的学习,首先的有一个硬件电脑,软件python的运行环境.说了一句废话,对于很多初学者而言,安装运行环境配置环境变量的什么的各种头疼,常常在第一步就被卡死了,对于pyth ...
- CQRS微服务架构模式
什么是微服务? 这是维基百科里面的定义:“微服务是面向服务架构(SOA)架构风格的一种变体,它将应用程序构建为一系列松散耦合的服务.在微服务体系结构中,服务应该是细粒度的,协议应该是轻量级的.将应用 ...
- javaweb部署多个项目(复制的项目)
最近需要在一台服务器部署两个已经编译完了的javaweb项目,但是因为项目名一样,仅修改文件夹的名字无法实现两个项目共存,最后只能考虑采用部署多个tomcat服务器的方法来实现.搜索后终于找到个好方法 ...