logging—日志处理 logging 日志级别——默认级别时warning
级别
级别数值
使用时机
DEBUG
10
详细信息,常用与调试
INFO
20
程序正常允许过程中产生的一些信息
WARNING
30
警告用户,虽然程序还在允许,但是可能发生错误
ERROR
40
由于更严重的问题,程序已经不能执行一些功能了
CRITICAL
50
严重错误,程序已经不能允许
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 logging.basicConfig(filename="./demo.log" ,filemode="w" ,level=logging.DEBUG) logging.debug("this is debug level" ) logging.info("this is info level" ) logging.warning("this is warning level" ) logging.error("this. error level" ) logging.critical("this critical level" ) ''' 控制台输出: DEBUG:root:this is debug level INFO:root:this is info level WARNING:root:this is warning level ERROR:root:this. error level CRITICAL:root:this critical level '''
logging 向日志输出变量 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 logging.basicConfig(level=logging.DEBUG) name = "cleamy" age = "20" logging.debug("name: %s, age: %s " % (name, age)) logging.debug("name: {}, age: {} " .format (name, age)) logging.debug(f"name: {name} , age: {age} " ) ''' 控制台输出 DEBUG:root:name: cleamy, age: 20 DEBUG:root:name: cleamy, age: 20 DEBUG:root:name: cleamy, age: 20 '''
logging 自定义 输出格式
自定义logging的日志输出方式可以 通过 format 和 datefmt 参数 进行设置
以下是常见的日志格式意思
格式样式
翻译
%(name)s
记录器(日志通道)的名称
%(levelno)s
日志级别编号(DEBUG, INFO, WARNING, ERROR, CRITICAL)
%(levelname)s
日志级别名称(DEBUG, INFO, WARNING, ERROR, CRITICAL)
%(pathname)s
日志调用的源文件的完整路径名(如果可用)
%(filename)s
日志调用的源文件名称
%(module)s
日志调用的源文件所在的模块名称
%(lineno)d
日志调用的源文件中的代码所在的行数
%(funcName)s
方法名称
%(created)f
创建日志记录的时间
%(asctime)s
创建LogRecord时的文本时间
%(msecs)d
创建时间的毫秒部分
%(thread)d
Thread ID
%(threadName)s
Thread name
%(process)d
Process ID
%(message)s
日志的消息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 format_log = "%(asctime)s %(levelname)s %(filename)s:%(lineno)s %(message)s" date_format = "%Y-%m-%d %H:%M:%S" logging.basicConfig(format =format_log,datefmt=date_format,level=logging.DEBUG) name = "cleamy" age = "20" logging.debug("name: %s, age: %s " % (name, age)) logging.debug(f"name: {name} , age: {age} " ) ''' 控制台输出 2024-04-11 19:45:38 DEBUG test_logging_format.py:14 name: cleamy, age: 20 2024-04-11 19:45:38 DEBUG test_logging_format.py:15 name: cleamy, age: 20 '''
logging 高级应用 logging 模块 采用 了 模块化设计,主要包含四种组件 Loggers:记录器,提供应用程序代码能直接使用
Handlers:处理器,将就器产生的日志发发送至目的地
Filters:过滤器,提供更好的粒度控制,决定哪些日志会被输出
formatters:格式化器,设置日志内容的组成结构和消息字段
loggers 记录器
1.提供应用程序的调用接口
logger = logging.getLogger(_name_ )
2、决定日志记录的级别
logger.setLevel()
3、将日志内容传递到相关的handles中
logger.addHandler() 和logger.removeHandler()
Handlers 处理器
它将日志分发到不同的目的地,可以是文件、标准输出、邮件、或者通过socke、http等协议发送的地方
Streamhandler
标准输出stdout(如显示器)分发器
创建方法: sh = loggin.StreamHandler(stream=None)
FileHandler
将日志保存到磁盘文件的处理器
创建方式:fh = logging.FileHandler(filename,mode=’a’,encoding=’utf-8’)
setFormatter():设置当前handler对象使用的消息格式
RotatingFileHandler 多文件日志文件
TimedRotatingFileHandler 按照时间进行多个日志文件
Formatter 格式
formatter对象用来最终设置日志信息的顺序、结构和内容
其构造方法为
ft = logging.formatter._init_ (fmt=None,datafmt=None,style=’%’)
datefmt 默认是 %Y-%m-%d %H:%M:%S 样式
style 参数 默认为 百分符%, 这样表示%(\)s 格式的 字符串
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 logger = logging.getLogger("applog" ) print (logger)logger = logging.getLogger() logger.setLevel(logging.DEBUG) print (logger)consoleHandler = logging.StreamHandler() consoleHandler.setLevel(logging.INFO) print (consoleHandler)filehandler = logging.FileHandler(filename='demo2.log' ,encoding='utf-8' ) print (filehandler)formater = logging.Formatter("%(asctime)s %(filename)s %(lineno)s %(message)s" ) consoleHandler.setFormatter(formater) filehandler.setFormatter(formater) logger.addHandler(consoleHandler) logger.addHandler(filehandler) f = logger.Filter("ccb" ) filehandler.Filter("ccb" ) logger.debug("this is logger of debug" ) logger.info("this is logger of info" ) logger.warning("this is logger of warning" ) logger.error("this is logger of error" ) logger.critical("this is logger of critical" ) ''' 控制台 日志信息 2024-04-11 20:49:50,389 loggingFor.py 33 this is logger of info 2024-04-11 20:49:50,389 loggingFor.py 34 this is logger of warning 2024-04-11 20:49:50,389 loggingFor.py 35 this is logger of error 2024-04-11 20:49:50,389 loggingFor.py 36 this is logger of critical ''' ''' 文件夹中的 日志信息 2024-04-11 20:49:50,389 loggingFor.py 32 this is logger of debug 2024-04-11 20:49:50,389 loggingFor.py 33 this is logger of info 2024-04-11 20:49:50,389 loggingFor.py 34 this is logger of warning 2024-04-11 20:49:50,389 loggingFor.py 35 this is logger of error 2024-04-11 20:49:50,389 loggingFor.py 36 this is logger of critical '''