中英文自助网站建设,可以做课程的网站,如何找企业联系做网站,做h5的免费软件python logging 详解1. 导入logging模块2. 配置日志记录器3. 记录日志消息4. 自定义日志记录器5. 日志轮换6. 日志过滤器7. 日志异常跟踪8. 日志输出到控制台和文件9. 使用配置文件10. 使用第三方库11. format格式详解12. 总结Python的logging模块提供了灵活的日志记录功能可以记录各种级别的日志消息并可以将日志消息输出到文件、控制台、网络等不同的位置。下面是Python logging模块的详细使用方法
1. 导入logging模块
import logging2. 配置日志记录器
可以通过BasicConfig()方法来配置日志记录器的基本属性例如日志级别、输出格式、输出位置等。
logging.basicConfig(levellogging.DEBUG,format%(asctime)s %(levelname)s %(message)s,filenamemyapp.log,filemodew)其中
level设置日志级别可以设置为DEBUG、INFO、WARNING、ERROR、CRITICAL。format设置日志输出格式可以自己定义输出格式例如’%(asctime)s %(levelname)s %(message)s’表示输出时间、日志级别和消息内容。filename设置日志输出文件名如果不设置则默认输出到控制台。filemode设置日志输出文件的打开模式可以设置为’w’表示覆盖写a’表示追加写。
3. 记录日志消息
可以使用logging模块提供的不同方法来记录不同级别的日志消息例如
logging.debug(This is a debug message)
logging.info(This is an info message)
logging.warning(This is a warning message)
logging.error(This is an error message)
logging.critical(This is a critical message)4. 自定义日志记录器
可以通过Logger类来自定义日志记录器例如
logger logging.getLogger(mylogger)
logger.setLevel(logging.DEBUG)
handler logging.FileHandler(myapp.log)
formatter logging.Formatter(%(asctime)s %(levelname)s %(message)s)
handler.setFormatter(formatter)
logger.addHandler(handler)logger.debug(This is a debug message)
logger.info(This is an info message)
logger.warning(This is a warning message)
logger.error(This is an error message)
logger.critical(This is a critical message)其中
getLogger()获取日志记录器可以设置记录器名称。setLevel()设置日志级别。FileHandler()设置日志输出位置可以设置输出文件名。Formatter()设置日志输出格式。addHandler()添加处理器。
5. 日志轮换
可以使用logging模块提供的RotatingFileHandler或TimedRotatingFileHandler类来实现日志轮换例如
handler logging.handlers.RotatingFileHandler(myapp.logmaxBytes1024*1024, backupCount5)
handler.setFormatter(formatter)
logger.addHandler(handler)其中
RotatingFileHandler()创建日志轮换处理器可以设置最大文件大小和备份数量。maxBytes设置日志文件最大大小超过这个大小就会自动创建新的日志文件。backupCount设置备份数量超过这个数量就会删除最早的日志文件。
TimedRotatingFileHandler类可以按照时间轮换日志文件例如
handler logging.handlers.TimedRotatingFileHandler(myapp.log, whenmidnight, backupCount5)
handler.setFormatter(formatter)
logger.addHandler(handler)其中
TimedRotatingFileHandler()创建按时间轮换的日志处理器。when设置轮换时间可以设置为’midnight’、‘H’、M’等不同的时间间隔。
6. 日志过滤器
可以通过Filter类来设置日志过滤器只有符合条件的日志消息才会被记录例如
class MyFilter(logging.Filter):def filter(self, record):return important in record.getMessage()handler logging.FileHandler(myapp.log)
handler.addFilter(MyFilter())
handler.setFormatter(formatter)
logger.addHandler(handler)logger.debug(This is a debug message)
logger.info(This is an info message)
logger.warning(This is an important warning message)
logger.error(This is an error message)
logger.critical(This is a critical message)其中
Filter()创建日志过滤器。filter()实现过滤器的逻辑返回True表示记录该日志消息返回False表示忽略该日志消息。
7. 日志异常跟踪
可以通过exc_info参数来记录异常信息例如
try:raise ValueError(This is an exception message)
except ValueError:logger.error(Exception occurred, exc_infoTrue)其中
exc_infoTrue记录异常信息包括异常类型、异常消息和异常堆栈。
以上就是Python logging模块的详细使用方法通过灵活配置和使用可以实现各种不同场景下的日志记录和管理。
8. 日志输出到控制台和文件
在默认情况下日志信息只会输出到文件中如果需要同时输出到控制台可以添加StreamHandler处理器例如
import syshandler logging.StreamHandler(sys.stdout)
handler.setFormatter(formatter)
logger.addHandler(handler)其中
StreamHandler()创建输出到控制台的处理器可以设置输出流。sys.stdout设置输出流为标准输出。
9. 使用配置文件
可以通过配置文件来设置日志记录器的属性例如
[loggers]
keysroot,sampleLogger[handlers]
keysconsoleHandler,fileHandler[formatters]
keyssimpleFormatter[logger_root]
levelDEBUG
handlersconsoleHandler,fileHandler[logger_sampleLogger]
levelDEBUG
handlersfileHandler
qualnamesampleLogger
propagate0[handler_consoleHandler]
classStreamHandler
levelDEBUG
formattersimpleFormatter
args(sys.stdout,)[handler_fileHandler]
classFileHandler
levelDEBUG
formattersimpleFormatter
args(myapp.log, w)[formatter_simpleFormatter]
format%(asctime)s %(levelname)s %(message)s
datefmt%Y-%m-%d %H:%M:%S其中
loggers设置日志记录器的名称。handlers设置日志处理器的名称。formatters设置日志格式化器的名称。logger_*设置日志记录器的属性例如日志级别、处理器、传递性等。handler_*设置日志处理器的属性例如处理器类型、日志级别、格式化器等。formatter_*设置日志格式化器的属性例如输出格式、时间格式等。
可以通过fileConfig()方法来加载配置文件例如
import logging.configlogging.config.fileConfig(logging.conf)logger logging.getLogger(sampleLogger)logger.debug(This is a debug message)
logger.info(This is an info message)
logger.warning(This is a warning message)
logger.error(This is an error message)
logger.critical(This is a critical message)10. 使用第三方库
除了Python自带的logging模块之外还有一些第三方库可以实现更多的功能和扩展例如
loguru提供了更加灵活和方便的日志记录方式。structlog提供了更加可定制化和扩展性的日志记录方式。coloredlogs提供了彩色输出和更加易读的日志信息。logbook提供了更加高效和线程安全的日志记录方式。
这些第三方库都有其自己的特点和优势可以根据具体需求选择适合的库来实现日志记录和管理。
11. format格式详解
logging模块中的format参数用于设置日志的格式化输出方式可以自定义输出的内容和格式。下面是format参数的详解
%(asctime)s日志记录时间格式为“年-月-日 时:分:秒,毫秒”。%(name)s日志记录器的名称。%(levelname)s日志级别名称。%(message)s日志消息内容。%(pathname)s当前执行代码的路径。%(filename)s当前执行代码的文件名。%(funcName)s当前执行函数的名称。%(lineno)d当前执行代码的行号。%(thread)d当前执行线程的ID。%(threadName)s当前执行线程的名称。%(process)d当前执行进程的ID。%(processName)s当前执行进程的名称。
例如设置日志格式为’%(asctime)s %(levelname)s %(message)s’表示输出时间、日志级别和消息内容。
还可以通过添加格式控制符来进一步定制输出格式例如
%(levelname)-8s设置日志级别名称的宽度为8个字符左对齐。%(message).50s设置日志消息内容的最大宽度为50个字符超过部分截断。%(asctime)s,%(msecs)03d设置日志记录时间的毫秒部分为3位数字例如“2021-09-23 10:23:45,123”。%(filename)s:%(lineno)d设置当前执行代码的文件名和行号例如“test.py:20”。
通过灵活使用格式控制符可以实现各种不同的输出格式和显示效果方便日志记录和查看。
12. 总结
Python的logging模块提供了灵活的日志记录功能可以记录各种级别的日志消息并可以将日志消息输出到文件、控制台、网络等不同的位置。通过灵活配置和使用可以实现各种不同场景下的日志记录和管理。在实际应用中需要根据具体需求选择合适的日志记录方式和工具以方便运维和调试。