好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

python标准库logging

第一种编程式方法代码如下

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的详细内容...

  阅读:30次