[loggers] # 配置logger信息。必须包含一个名字叫做root的logger,当使用无参函数logging.getLogger()时,默认返回root这个logger,其他自定义logger可以通过 logging.getLogger("fileAndConsole") 方式进行调用 keys=root,file,fileAndConsole [handlers] # 定义声明handlers信息。 keys=fileHandler,consoleHandler [formatters] # 设置日志格式 keys=simpleFormatter [logger_root] # 对loggers中声明的logger进行逐个配置,且要一一对应,在所有的logger中,必须制定lebel和handlers这两个选项,对于非roothandler,还需要添加一些额外的option,其中qualname表示它在logger层级中的名字,在应用代码中通过这个名字制定所使用的handler,即 logging.getLogger("fileAndConsole"),handlers可以指定多个,中间用逗号隔开,比如handlers=fileHandler,consoleHandler,同时制定使用控制台和文件输出日志 level=DEBUG handlers=consoleHandler [logger_file] level=DEBUG handlers=fileHandler qualname=file propagate=1 [logger_fileAndConsole] level=DEBUG handlers=fileHandler,consoleHandler qualname=fileAndConsole propagate=0 [handler_consoleHandler] # 在handler中,必须指定class和args这两个option,常用的class包括 StreamHandler(仅将日志输出到控制台)、FileHandler(将日志信息输出保存到文件)、RotaRotatingFileHandler(将日志输出保存到文件中,并设置单个日志wenj文件的大小和日志文件个数),args表示传递给class所指定的handler类初始化方法参数,它必须是一个元组(tuple)的形式,即便只有一个参数值也需要是一个元组的形式;里面指定输出路径,比如输出的文件名称等。level与logger中的level一样,而formatter指定的是该处理器所使用的格式器,这里指定的格式器名称必须出现在formatters这个section中,且在配置文件中必须要有这个formatter的section定义;如果不指定formatter则该handler将会以消息本身作为日志消息进行记录,而不添加额外的时间、日志器名称等信息; class=StreamHandler args=(sys.stdout,) level=DEBUG formatter=simpleFormatter [handler_fileHandler] class=FileHandler args=('dialog-analysis.log', 'a') level=DEBUG formatter=simpleFormatter [formatter_simpleFormatter] format=%(asctime)s - %(module)s - %(thread)d - %(levelname)s : %(message)s datefmt=%Y-%m-%d %H:%M:%S
11-17
1万+
10-17
3836
01-12
4834
05-24
1万+