高端网站建设过程,游戏软件开发属于什么专业,软文推广多少钱,怎样做永久网站二维码目录 基础使用日志的6个级别打印日志修改打印级别 高级应用logging的组成记录器Loggers处理器Handlers过滤器Filterformatter格式创建关联打印日志 配置文件参考 基础使用
日志的6个级别 打印日志
import logginglogging.debug(调试日志)
logging.info(消息日志)
logging.war… 目录 基础使用日志的6个级别打印日志修改打印级别 高级应用logging的组成记录器Loggers处理器Handlers过滤器Filterformatter格式创建关联打印日志 配置文件参考 基础使用
日志的6个级别 打印日志
import logginglogging.debug(调试日志)
logging.info(消息日志)
logging.warning(警告日志)
logging.error(错误日志 )
logging.critical(严重错误日志)注意默认情况下logging的输出级别是warning级别
修改打印级别
import logginglogging.basicConfig(levellogging.DEBUG, format%(asctime)s %(name)s [%(pathname)s line:%(lineno)d] %(levelname)s %(message)s], datefmt%Y-%m-%d %H:%M:%S, filenamedemo.log,filemodew) level是指定日志的打印级别 format是日志输出格式
%(name)s Logger的名字(get1ogger时指定的名字
%(levelno)d 数字形式的日志级别
%(levelname)s 文本形式的日志级别
%(pathname)s 调用日志输出位置的完整路径名
%(filename)s 调用日志输出的文件名
%(module)s 调用日志输出日志的模块名
%(funcName)s 调用日志输出日志的函数名
%(1ineno)d 调用日志输出两数的语句所在的代码行
%(created)f 当前时间用UNIx标准的表示时间的浮 点数表示
%(relativecreated)d 输出日志信息时的自Loqger创建以 来的毫秒数
%(asctime)s 字符串形式的当前时间默认格式是“2023-10-05 12:13:33,231”
%(thread)d 线程ID可能没有
%(threadName)s 线程名可能没有
%(process)d 进程ID可能没有
%(message)s 用户输出的消息datefmt是修改 asctime 的时间格式 filename是若不指定此配置默认打印在控制台 指定后打印到指定路径文件 filemode是文件写入方式1.‘w’覆盖文件中现有数据 2.‘a’ : 追加到文件末尾
高级应用
logging的组成 记录器Loggers
# 实例化一个记录器并将记录器的名字设为 training_log
logger logging.getLogger(nametraining_log)# 设置 logger 的日志级别为 info
logger.setLevel(logging.INFO)如果 logging.getLogger 不设置参数name 的话默认记录器的名字为 ‘root’
处理器Handlers
# 1、创建一个handler该handler往console打印输出
console_handler logging.StreamHandler()
# 2、设置 console_handler 的日志级别为 debug
console_handler.setLevel(logging.DEBUG) # 3、再创建一个handler该handler往文件中打印输出
# 未给file_handler指定日志级别它会默认使用logger 的日志级别
file_handler logging.FileHandler(filenamedemo.log ) 过滤器Filter
flt logging.Filter(training.loss)formatter格式
# 创建一个标准版日志打印格式
standard_formatter logging.setFormatter(%(asctime)s %(name)s [%(pathname)s line:(lineno)d] %(levelname)s %(message)s])# 创建一个简单版日志打印格式
simple_formatter logging.setFormatter(%(levelname)s %(message)s])创建关联
# 让 console_handler 使用 标准版日志打印格式
console_handler.setFormatter(standard_formatter)
# 让 file_handler 使用 标准版日志打印格式
file_handler.setFormatter(simple_formatter)# 给记录器绑定上 console_handler 和 file_handler
logger.addHandler(console_handler)
logger.addHandler(file_handler)#过滤器
logger.addFilter(flt)打印日志
logger.debug(调试日志)
logger.info(消息日志)
logger.warning(警告日志)
logger.error(错误日志 )
logger.critical(严重错误日志)配置文件 配置文件log.conf
[loggers]
keysroot, logger01[handlers]
keysconsole_handler,file_handler[formatters]
keysstandard_formatter,simple_formatter[logger_root]
levelDEBUG
handlersfile_handler[logger_logger01]
levelINFO
handlersconsole_handler
qualnamemylogger
propagate0[handler_console_handler]
classStreamHandler
args(sys.stdout,)
formatterstandard_formatter[handler_file_handler]
levelDEBUG
classFileHandler
args(demo.log, w)
formattersimple_formatter[formatter_standard_formatter]
format%(asctime)s %(name)s [%(pathname)s line:(lineno)d] %(levelname)s %(message)s[formatter_simple_formatter]
format%(levelname)s %(message)sdemo.py
import logging.configlogging.config.fileConfig(demo.conf)root_logger logging.getLogger()
my_logger logging.getLogger(mylogger)root_logger.debug(调试日志)
root_logger.info(消息日志)
root_logger.warning(警告日志)
root_logger.error(错误日志 )
root_logger.critical(严重错误日志)my_logger.debug(调试日志)
my_logger.info(消息日志)
my_logger.warning(警告日志)
my_logger.error(错误日志 )
my_logger.critical(严重错误日志)参考
参考了b站的Enzo大佬做的笔记有关例子可见其网站