python log 模块的简单示例
条件:引用 logging模块
简短示例如下:
# --- app.py -------------------------------------------------------------------- import logging logging.warn("Hello") logging.error("Still here...") logging.warn("Goodbye")
执行命令: python app.py
, 输出结果如下所示:
WARNING:root:Hello ERROR:root:Still here... WARNING:root:Goodbye
不用着急,输出log的格式,这是可以配置的。
# --- mymodule.py -------------------------------------------------------------------- import logging log = logging.getLogger("MyModule") def doIt(): log.debug("doin' stuff") #do stuff...but suppose an error occurs? raise TypeError, "bogus type error for testing" # --- myapp.py ----------------------------------------------------------------------- import logging, mymodule logging.basicConfig() log = logging.getLogger("MyApp") log.setLevel(logging.DEBUG) #set verbosity to show all messages of severity >= DEBUG log.info("Starting my app") try: mymodule.doIt() except Exception, e: log.exception("There was a problem.") log.info("Ending my app")
执行命令:python myapp.py
, 输出结果如下所示:
INFO:MyApp:Starting my app ERROR:MyApp:There was a problem. Traceback (most recent call last): File "myapp.py", line 9, in ? mymodule.doIt() File "mymodule.py", line 7, in doIt raise TypeError, "Bogus type error for testing" TypeError: Bogus type error for testing INFO:MyApp:Ending my app
logging 模块中,日志默认分为5个等级,分别为: DEBUG 、 INFO 、 WARNING 、 ERROR 、 CRITICAL
logging 模块中,Handlers 有以下几种:
- StreamHandler - logging to a stream, defaulting to sys.stderr.
- FileHandler - 记录硬盘文件
- RotatingFileHandler - 记录硬盘文件,支持分解回滚
- SocketHandler - 记录socket流
- DatagramHandler - 记录UDP socket
- SMTPHandler - 记录电子邮件地址
- SysLogHandler - 记录 Unix 系统日志
- MemoryHandler - 当缓冲区慢的时候,记录内存数据
- NTEventLogHandler - 记录NT事件
- HTTPHandler - 记录向web服务器发送的事件