这篇重点是讲解logging 模块的ScodkeHandler, Filter, 以及logging模块的文件配置方式
SocketHandler
socketHandler 的用法比较复杂,客户端的写法与上一章节所讲的基本类似,但是我们需要对服务端代码进行相应的修改。(ps: 如果用socket模块写服务端,返回的是一堆乱码, 用正常的socketServer会返回正确的内容,但格式会发生问题,有一些乱的符号)Filter
Filter的用法比较简单,就是通过设置logger的名字,来规定只有被允许的logger和logger的子logger才能打印。代码如下:import logging fmt = '%(asctime)s - %(filename)s:%(lineno)s - %(name)s - %(message)s' s_handler = logging.StreamHandler() formatter = logging.Formatter('${name}: ${levelname} ${asctime} ${message}', '%Y-%m-%d %H:%M:%S', '$') s_handler.setFormatter(formatter) ss_logger = logging.getLogger("ss") a_filter = logging.Filter("ss.aa") ss_logger.addHandler(s_handler) aa_logger = logging.getLogger("ss.aa") bb_logger = logging.getLogger('ss.aa.bb') s_handler.addFilter(a_filter) ss_logger.error("asasdasd") aa_logger.error("asdasd") bb_logger.error('asdsdasdasd')
- logging.conf
logging.conf 是通过配置文件的方式,来配置logging的各项属性:
下面是配置文件的内容
[loggers]
keys=root
[handlers]
keys=consoleHandler,fileHandler
[formatters]
keys=simpleFormatter
[logger_root]
level=DEBUG
handlers=fileHandler
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[handler_fileHandler]
class=FileHandler
level=DEBUG
format=simpleFormatter
args=("./loggg.log", 'a')
[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=
调用方法:
import logging
import logging.config as config
config.fileConfig("test2/logging.conf")
logger1 = logging.getLogger('root')
logger1.debug("asdasd")
此外我们还可以用son格式的文件来配置logging……..这个就不讲了。。。(^下班要回家了^)