logging-1
# -*- coding:utf8 -*-
"""
# editor: hjjdreamer
# create-time: 2023/1/21-11:12
# Python-Script: 26_logging.py
# describe:
logging库的日志级别
debug == 10 == 详细信息,用于调试
info == 20 == 正常运行产生的信息
warning == 30 == 虽然正常运行但可能发生错误 (默认)
error == 40 == 问题严重以至于程序不能执行一些功能
critical == 50 == 问题严重以至于不能继续运行
logging采用模块化设计,主要4个组件
Loggers == 记录器 == 提供应用程序代码能直接使用的接口
Handlers == 处理器 == 将记录器产生的日志发送到目的地
Filters == 过滤器 == 粒度控制,决定哪些日志输出
Formatters == 格式化器 == 设置日志内容组成结构和信息字段
"""
import logging
# 默认日志级别是warning
# 使用baseConfig()来指定日志输出级别
# filename 设置输出到文件
# filemode 默认是追加模式a, 写入模式是w
# datefml 执行时间格式化
#logging.basicConfig(filename="demo.log", filemode="a", level=logging.DEBUG)
logging.basicConfig(format="%(asctime)s|%(levelname)s|%(filename)s:%(lineno)s|%(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
level=logging.DEBUG)
print("this is a log test")
logging.debug("this is debug log")
# logging.info("this is info log")
# logging.warning("this is warning log")
# logging.error("this is error log")
# logging.critical("this is critical log")
# DEBUG:root:this is debug log
# INFO:root:this is info log
# WARNING:root:this is warning log
# ERROR:root:this is error log
# CRITICAL:root:this is critical log
# 向日志输出变量
# logging.debug("name: %s, years: %d", "zhangsan", 18)
name = "lisi"
age = 19
# logging.debug("name: %s, age: %d" % (name, age))
# logging.debug("name: {}, age: {}".format(name, age))
logging.debug(f"name: {name}, age: {age}")
# 输出格式和添加公告信息
# format="%(asctime)s|%(levelname)s|%(filename)s:%(lineno)s|%(message)s"
# logging.basicConfig(format="%(asctime)s|%(levelname)s|%(filename)s:%(lineno)s|%(message)s", level=logging.DEBUG)
#
# 2023-01-21 21:21:44,829|DEBUG|26_logging.py:31|this is debug log
# 2023-01-21 21:21:44,829|DEBUG|26_logging.py:50|name: lisi, age: 19
logging-2
# -*- coding:utf8 -*-
"""
# editor: hjjdreamer
# create-time: 2023/1/21-22:03
# Python-Script: 26_logging_1.py
# describe:
"""
import logging
# 编程的方式来写一下高级的写法
# 记录器
logger = logging.getLogger("cn.cccb.APPLOG")
logger.setLevel(logging.INFO)
print(logger)
print(type(logger))
# 处理器handler
consoleHandler = logging.StreamHandler()
consoleHandler.setLevel(logging.DEBUG)
# 没有给handler指定日志级别,将使用logger的级别
fileHandler = logging.FileHandler(filename="addDemo.log")
# formatter格式
formatter = logging.Formatter("%(asctime)s\t|%(levelname)8s|%(filename)s:%(lineno)s\t|%(message)s")
# 给处理器设置格式
consoleHandler.setFormatter(formatter)
fileHandler.setFormatter(formatter)
# 记录器要设置处理器
logger.addHandler(consoleHandler)
logger.addHandler(fileHandler)
# 定义一个过滤器
flt = logging.Filter("cn.cccb")
# 关联过滤器
logger.addFilter(flt)
fileHandler.addFilter(flt)
# 打印日志代码
logger.debug("this is debug log")
logger.info("this is info log")
logger.warning("this is warning log")
logger.error("this is error log")
logger.critical("this is critical log")