Python之代码片段-日志功能

简介: 这是一段Python日志配置代码,实现分级日志输出:控制台仅显示INFO及以上级别,文件按天轮转并保留7天,支持DEBUG级全记录。附带简洁调用示例,便于快速集成到服务项目中。

代码

import logging
import os
from logging.handlers import TimedRotatingFileHandler


def setup_logger(log_path: str, file_name: str = "server.log"):
    # 创建 Logger 实例
    log = logging.getLogger('server-logger')
    log.setLevel(logging.DEBUG)  # 设置全局最低日志级别
    # 避免重复添加 Handler(防止重复日志)
    if log.handlers:
        return log
    # 定义日志格式
    formatter = logging.Formatter(
        '%(asctime)s %(levelname)s thread[%(thread)d] %(module)s.%(funcName)s:%(lineno)d -> %(message)s'
    )
    # 控制台 Handler(输出到终端)
    console_handler = logging.StreamHandler()
    console_handler.setLevel(logging.INFO)  # 控制台只输出 INFO 及以上级别
    console_handler.setFormatter(formatter)
    log.addHandler(console_handler)
    # 按日期切割的 File Handler(输出到文件)
    filename = f"{log_path}/{file_name}"
    file_handler = TimedRotatingFileHandler(
        filename=filename,
        when='midnight',  # 每天午夜切割
        interval=1,  # 间隔1天
        backupCount=7,  # 保留7天日志
        encoding='utf-8'
    )
    file_handler.setLevel(logging.INFO)  # 文件记录所有 DEBUG 及以上级别
    file_handler.setFormatter(formatter)
    log.addHandler(file_handler)
    return log


# 获取当前目录的上一级目录下,的logs文件夹路径
config_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "logs")
# 查询日志目录是否存在,不存在创建
os.makedirs(config_path, exist_ok=True)
logger = setup_logger(config_path, "server.log")


if __name__ == '__main__':
    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')

示例

from manager.LoggerManager import logger

if __name__ == '__main__':
    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')
相关文章
|
29天前
|
对象存储 Python
Python之DeepAgents自动摘要触发
DeepAgents是基于LangChain的智能体框架,核心特性之一为自动摘要功能:当上下文超长导致模型报错时,自动触发摘要压缩,再重试推理。需显式设置`max_input_tokens`参数启用,支持流式输出摘要日志。
226 3
|
1天前
|
人工智能 分布式计算 关系型数据库
2026阿里云服务器价格解析:最低38元1年起,热门实例活动价格与选购指南参考
2026年阿里云服务器价格参考:轻量应用服务器2核2G抢购价低至38元/年,2核4G为9.9元/月起;经济型e实例99元/年、u1实例199元/年,均支持新购续费同价;通用算力型u2i实例包年3折起,第九代企业级实例(c9i/g9i/r9i)低至6.4折。本文还按业务场景给出选购建议:轻量级应用选轻量/e实例,成长型企业选u2i,高性能计算选九代实例,并强调通过领券、抢购活动等可进一步降低成本。
|
8天前
|
存储 弹性计算 小程序
阿里云最便宜云服务器怎么选?38元/99元/199元机型性能全解析
阿里云推出38元/年、99元/年、199元/年三档高性价比云服务器,分别面向个人开发者、小微初创及中小企业。本文从配置、实测性能与适用场景三维度深度对比,助力大家轻松选择低成本上云!
210 4
|
1天前
|
安全 Python
Python之代码片段-YAML配置文件读取
这是一个基于PyYAML的Python配置管理工具,采用单例模式加载YAML配置文件。支持点语法访问嵌套配置(如config.database.host)、安全获取(get方法带默认值),并内置文件不存在及解析异常处理,简洁易用。
|
20小时前
|
人工智能
从AI工具到AI智能体,行业正在发生什么变化?
近两年AI迅猛发展,正从“问答工具”升级为具备自动规划、工具调用与多步执行能力的“AI智能体”。它赋能个体,催生OPC(一人公司)与OPD(一人部门),放大个人生产力。行业焦点转向“交付能力”——连接AI、流程、商业目标并创造真实价值。人才培育也正从学知识转向造结果。(239字)
|
1天前
|
人工智能 编解码 安全
一站式AI视频翻译的技术架构:ASR→NMT→TTS→字幕压制的全链路设计
本文提出一套可落地的AI视频翻译系统架构,强调构建稳定、可追踪的数据管线而非简单串联模型。全链路分为输入、ASR、说话人分离、NMT、TTS、后处理和任务编排7层,以带时间轴/角色/状态的segment为核心数据结构,确保时间轴精准、声音不串、成品直发,专为出海、课程本地化与短剧翻译等场景优化。
|
1天前
|
人工智能 运维 Cloud Native
其他活动 | PPT合集下载
云原生讲师大会分享材料
61 5
|
1天前
|
人工智能 API 开发工具
阿里云CodingPlan购买订阅火爆,还有首月优惠吗?7.9元的Lite版本还有吗?
阿里云百炼Coding Plan是专为开发者打造的AI编程订阅服务,当前仅开放Pro高级套餐(200元/月),含9万次/月请求额度,支持Qwen3.5-Plus、Kimi-k2.5等多模态模型。需每日9:30抢购,不支持退款。阿里云CodingPlan官方订阅链接:https://t.aliyun.com/U/G7pldC
60 3
|
1天前
|
Linux iOS开发 Docker
厌倦了使用 lsof 命令排查端口,来试试 sonar
`sonar` 是专为开发者打造的智能端口管理工具,一键查看本机及Docker/Compose服务的监听端口,支持日志查看、容器进入、健康检查、依赖图谱、端口监控与环境快照等,大幅提升开发调试与故障排查效率。(239字)
33 3
|
1天前
|
JSON 算法 前端开发
LIMS 存量系统改造:基于动态行渲染算法实现多项目检测表单的复用与异步回填
FlashTable为LIMS系统破解第三方检测“模板爆炸”难题。通过JSON Schema驱动的运行时动态渲染,支持多级循环、行数自适应、设备数据自动回填,并具备私有化部署、全链路审计与零代码更新能力,大幅提升研发效率与系统安全性。