第一种编程式方法代码如下
import?logging #?编程的方式 #?记录器 logger?=?logging.getLogger('cn.cccb.applog') logger.setLevel(logging.INFO) #?处理器handler consoleHandler?=?logging.StreamHandler() consoleHandler.setLevel(logging.DEBUG) #?没有给handler指定日志级别,将使用logger的级别 fileHandler?=?logging.FileHandler(filename='addDemo.log') fileHandler.setLevel(logging.INFO) #?formatter格式 formatter?=?logging.Formatter("%(asctime)s|%(levelname)-8s|%(filename)10s:%(lineno)4s|%(message)s") #?给处理器设置格式 consoleHandler.setFormatter(formatter) fileHandler.setFormatter(formatter) #?记录器要设置处理器 logger.addHandler(consoleHandler) logger.addHandler(fileHandler) #?定义一个过滤器,过滤处理器和记录器(笔) flt?=?logging.Filter("cn.cccb") #?关联过滤器 logger.addFilter(flt) #?打印日志的代码 logger.debug('debug?message') logger.info('info?message') logger.warning('warning?message') logger.error('error?message') logger.critical('critical?message')
第二种配置文件的方式(logging.conf)
[loggers] keys=root,?applog [handlers] keys=fileHandler,?consoleHandler [formatters] keys=simpleFormatter [logger_root] level=DEBUG handlers=consoleHandler [logger_applog] level=DEBUG handlers=fileHandler,consoleHandler qualname=applog propagate=0 [handler_consoleHandler] class=StreamHandler args=(sys.stdout,) level=DEBUG formatter=simpleFormatter [handler_fileHandler] class=handlers.TimedRotatingFileHandler args=('applog.log',?'midnight',?1,?0)?#?午夜12点之后第几秒开始生成一个新的日志文件,备份的天数,0全部保留 level=DEBUG formatter=simpleFormatter [formatter_simpleFormatter] format=%(asctime)s|%(levelname)-8s|%(filename)10s:%(lineno)4s|%(message)s datefmt=%Y-%m-%d?%H:%M:%S
python代码如下
import?logging import?logging.config #?配置文件的方式来处理日志 logging.config.fileConfig('logging.conf') rootLogger?=?logging.getLogger() rootLogger.debug("This?is?root?Logger,?debug") logger?=?logging.getLogger('applog') logger.debug("This?is?applog,?debug") a?=?"abc" try: ????int(a) except?Exception?as?e: ????#?logger.error(e) ????logger.exception(e) #?用logger.exception(e)?栈信息报错可以保存到日志文件中 #?Traceback?(most?recent?call?last): #???File?"/Users/zhaozhao/Documents/myresource/test/my_log2.py",?line?16,?in?<module> #?????int(a) #?ValueError:?invalid?literal?for?int()?with?base?10:?'abc' #?作为开发者,我们可以通过以下3中方式来配置logging: # #?1)使用Python代码显式的创建loggers,?handlers和formatters并分别调用它们的配置函数; #?2)创建一个日志配置文件,然后使用fileConfig()函数来读取该文件的内容; #?3)创建一个包含配置信息的dict,然后把它传递个dictConfig()函数; #?参考链接:https://HdhCmsTestcnblogs测试数据/yyds/p/6885182.html
查看更多关于python标准库logging的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did163492