python如何输出log --------------------------------------------------- 在一个后台应用程序中,经常会有这样的需求,输出程序的运行事件到一个文件中,以便管理员进行事后 问题分析和定位。 在linux中,系统提供了syslog机制,程序可以调用syslog函数来将事件写入文件中,并且可以统一的控制 事件的输出级别。 在python中,有一个模块logging提供了类似的功能。它实现了非常方便的事件记录机制。它主要包含三个 功能 : * 输出程序的事件并发送到相应的文件或远端IP. * 统一控制事件的输出级别。 * 格式化程序输出到日志文件中的格式。 logging 的输出级别包含以下几个,数字越大,表示越重要。 * CRITICAL 50 * ERROR 40 * WARNING 30 * INFO 20 * DEBUG 10 下面代码将日志输出到文件syslog.log中,并且输出级别为INFO, 大于等于INFO级别的均会输出, 小于INFO级别的不会输出到文件中:: import logging logging.basicConfig(filename='syslog.log',level=logging.INFO) logging.debug('This message not to the log file') logging.info('hello china') logging.warning('hello beijing') 其中"hello china"和"hello beijing"会输出到syslog.log文件中,其他的不会输出到log文件中。 如果不调用basicConfig函数对输出文件和级别进行控制,默认的输出级别为WARNING,并且默认输出到屏幕中。 如果需要像syslog一样将事件消息可以输出到一个远端的服务器上,那就需要和SysLogHandler类配合使用,函数原型:: class logging.handlers.SysLogHandler(address=('localhost', SYSLOG_UDP_PORT), facility=LOG_USER, socktype=socket.SOCK_DGRAM) 详见: https://docs.python.org/3.6/library/logging.handlers.html