python3中logging控制台输出及日志分割

日期 2023年06月01日 18:35

分类 Python

标签

浏览 1704

字数统计: 2256(字)

文章目录

python3中logging用法

logging-仅控制台输出

# 日志格式
formatter = logging.Formatter('%(asctime)s - %(filename)s[%(lineno)s] - %(levelname)s - %(message)s')
# 控制台输出
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(formatter)
 # 初始logge
logger = logging.getLogger("")
logger.setLevel(logging.DEBUG)
logger.addHandler(console_handler)  # 日志-控制台输出

logging-仅写文件

# 日志格式
formatter = logging.Formatter('%(asctime)s - %(filename)s[%(lineno)s] - %(levelname)s - %(message)s')
# 控制台输出
file_handler = logging.FileHandler(filename="test.log", encoding='utf-8')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
 # 初始logge
logger = logging.getLogger("")
logger.setLevel(logging.DEBUG)
logger.addHandler(file_handler)  # 日志-写入文件

综合示例


# 获取日志logger,注意创建目录

def get_logger(filename: str):
    # 日志格式
    formatter = logging.Formatter('%(asctime)s - %(filename)s[%(lineno)s] - %(levelname)s - %(message)s')

    # 1. 日志-控制台输出
    console_handler = logging.StreamHandler()
    console_handler.setLevel(logging.DEBUG)
    console_handler.setFormatter(formatter)

    # 2. 日志-写文件
    file_handler = logging.FileHandler(filename=filename, encoding='utf-8')
    file_handler.setLevel(logging.DEBUG)
    file_handler.setFormatter(formatter)

    # 3. 日志-写文件-按文件大小分割
    size_handler = handlers.RotatingFileHandler(filename, maxBytes=100 * 1024 * 1024, backupCount=10, encoding='utf-8')  # 文件大小达到100MB时创建一个日志文件,文件数不超过10个
    size_handler.setFormatter(formatter)
    size_handler.setLevel(logging.DEBUG)

    # 4. 日志-写文件-按时间分割
    time_handler = handlers.TimedRotatingFileHandler(filename, when="D", backupCount=30, encoding='utf-8')  # 每隔天创建一个日志文件,文件数不超过30个
    time_handler.setFormatter(formatter)
    time_handler.setLevel(logging.DEBUG)

    # 初始logger,注意创建目录
    logger = logging.getLogger(filename)
    logger.setLevel(logging.DEBUG)
    # ------------------- 按需选择日志handler (2,3,4只需选一) ---------------------------
    # logger.addHandler(console_handler)  # 日志-控制台输出
    # logger.addHandler(file_handler)  # 日志-写入文件
    logger.addHandler(size_handler)  # 日志-写文件-按文件大小分割
    # logger.addHandler(time_handler) # 日志-写文件-按时间分割

    return logger