经常使用的一个python logging封装,支持同时向console和文件输出
2016-11-26 19:38
866 查看
原文:http://www.cnblogs.com/Jerryshome/archive/2012/02/01/2334444.html
为了调试方便,特意将python的logging模块封装了一下,支持同时向console和file输出,支持日志文件回滚。
(1)myloggingconfig.py
(2)具体使用方法
import logging
logger = logging.getLogger(__name__)
if __name__ == "__main__":
import myloggingconfig
msg = “this is just a test”
logger.info(msg)
如果想动态更改logging的level,可以通过logging.getLogger("").setLevel(level)进行更改。
为了调试方便,特意将python的logging模块封装了一下,支持同时向console和file输出,支持日志文件回滚。
(1)myloggingconfig.py
# -*- coding: utf-8 -*- ''' Created on 2011-8-24 主要用途: 对程序中所使用的loggong模式做一般性配置 @author: JerryKwan ''' import logging import logging.handlers import os LEVELS = {'NOSET': logging.NOTSET, 'DEBUG': logging.DEBUG, 'INFO': logging.INFO, 'WARNING': logging.WARNING, 'ERROR': logging.ERROR, 'CRITICAL': logging.CRITICAL} #set up logging to file #logging.basicConfig(level = logging.NOTSET, # format = "%(asctime)s %(name)-12s %(levelname)-8s %(message)s" # ) ## filename = "./log.txt", ## filemode = "w") # create logs file folder logs_dir = os.path.join(os.path.curdir, "logs") if os.path.exists(logs_dir) and os.path.isdir(logs_dir): pass else: os.mkdir(logs_dir) # define a rotating file handler rotatingFileHandler = logging.handlers.RotatingFileHandler(filename ="./logs/log.txt", maxBytes = 1024 * 1024 * 50, backupCount = 5) formatter = logging.Formatter("%(asctime)s %(name)-12s %(levelname)-8s %(message)s") rotatingFileHandler.setFormatter(formatter) logging.getLogger("").addHandler(rotatingFileHandler) #define a handler whitch writes messages to sys console = logging.StreamHandler() console.setLevel(logging.NOTSET) #set a format which is simple for console use formatter = logging.Formatter("%(name)-12s: %(levelname)-8s %(message)s") #tell the handler to use this format console.setFormatter(formatter) #add the handler to the root logger logging.getLogger("").addHandler(console) # set initial log level logger = logging.getLogger("") logger.setLevel(logging.NOTSET)
(2)具体使用方法
import logging
logger = logging.getLogger(__name__)
if __name__ == "__main__":
import myloggingconfig
msg = “this is just a test”
logger.info(msg)
如果想动态更改logging的level,可以通过logging.getLogger("").setLevel(level)进行更改。
相关文章推荐
- 经常使用的一个python logging封装,支持同时向console和文件输出
- 新版python logging 封装,支持同时向console,file,socket输出
- Python logging浅尝(将log同时输出到Console和日志文件)
- Mouse without Borders是微软的一个软件实验项目,这款软件可让鼠标自由在局域网中的多台电脑间移动,键盘输入实现无缝切换,还可以直接用鼠标相互拖拽文件。 如果经常需要同时使用两台以
- Python同时向控制台和文件输出日志logging的方法
- 【Python】同时向控制台和文件输出日志logging
- 转【Python】同时向控制台和文件输出日志logging
- Python同时向控制台和文件输出日志logging的方法
- Python同时向控制台和文件输出日志logging的方法 Python logging模块详解
- python logging模块不支持多进程写到一个log文件
- 使用template扩展已有的DDX_Text函数,使扩展能够同时支持各种数据类型的一个例子
- CodeProject - 在C#使用SHGetFileInfo获取(管理)文件或者文件夹图标(C#封装Win32函数的一个例子)
- 使用IDropTarget接口同时支持文本和文件拖放
- 封装一个用户控件的pager.ascx文件供自己使用
- 收藏——在C#使用SHGetFileInfo获取(管理)文件或者文件夹图标(C#封装Win32函数的一个例子)
- 转:关于使用fputc输出,文件结尾多一个字符的问题
- 一个使用JAVA编写的类似按键精灵的程序,支持脚本文件编写(含源代码)
- 将调试信息同时输出到终端和文件_暨_多参数函数封装
- CodeProject - 在C#使用SHGetFileInfo获取(管理)文件或者文件夹图标(C#封装Win32函数的一个例子)
- WM_DROPFILES消息怎么用?一个界面上怎么让多个组件同时支持windows外部文件拖拽。DragAcceptFiles。