python生成时间分割的日志

日常写应用写日志是再常见不过的事情,用python的时候发现python自带一个日志模块还挺好用的,不仅支持常见的日志分隔方案,还支持输出到各种位置(比如文件、SMTP、内存)。

网上有大量的logging模块使用教程(可以见后面的参考),这里仅说说按照时间分割的方案。

logging模块按照时间分隔可以使用TimedRotatingFileHandler,logging模块提供三个基本的handler:StreamHandlerFileHandlerNullHandler,其他的handler放在logging.handlers里面,所以需要使用TimedRotatingFileHandler则需要import logging.handlers

logging分割日志用先往默认的文件(test.log)里打,等到分割条件的时候,把之前打的那部分日志转移到对应的分割文件里(上例中就是test.log.20141016.18),这样的好处就是每次最新的都在test.log中,不过你想统一后缀(比如test.2014101618.log)似乎有点困难了,而且应该会有额外的开销。

这里仅仅是简单解释了一下logging的时间分割文件方法,不是一个十分基础和详细的文章,如果您需要更详细的内容还请看下面的参考文章。

参考:

python logging使用方法(官方)
python logging模块文档(官方文档)
python logging TimedRotatingFileHandler(官方文档)
使用python的logging模块
python标准日志模块logging及日志系统设计
python logging现学现用 – TimedRotatingFileHandler使用方法

python-snappy编译安装遇到的问题

最近使用snappy压缩数据,编译python-snappy的时候,因为没有root权限,只好自己来指定链接的地址。

build的时候发现没有可以指定的选项,只好通过指定CPLUS_INCLUDE_PATH到snappy库的include目录,指定LIBRARY_PATH到snappy的lib目录。

成功安装snappy。

之后引入snappy模块的时候,发现没有安装ffi库,真是杯具呀。编译libffi到指定目录,启动python发现python找不到这个库。

python不是查找LIBRARY_PATH和CPLUS_INCLUDE_PATH的,是通过查找C_INCLUDE_PATH和LD_LIBRARY_PATH来找到对应的头文件和库文件的。

所以我们需要把libffi和snappy的路径指定上:

snappy终于可以用啦。

如果需要每次都生效就把export语句放到.bashrc中就可以了。