You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python logging配置移除秒小数位?支持f-string吗?

解决Python日志的两个需求:移除秒小数位 + 使用f-string格式化

1. 移除日志时间的秒小数位

你的现有配置中,%(asctime)s默认会输出带毫秒的时间(如,247),只需给formatter添加datefmt参数,指定不带毫秒的时间格式即可实现需求。

修改后的配置文件:

[formatter_fileFormatter]
format=[%(asctime)s] %(levelname)-8s %(name)-12s %(message)s
datefmt=%Y-%m-%d %H:%M:%S

修改后对应的日志输出:

[2022-12-14 11:21:50] INFO my_logger.mod1 This is an info log message from func1

datefmt参数直接定义%(asctime)s的输出格式,%Y-%m-%d对应年月日,%H:%M:%S对应时分秒,完全剔除了毫秒部分。

2. 使用f-string进行日志格式化

Python logging的默认Formatter不直接支持f-string语法,需要自定义Formatter类来实现,核心是重写format方法,用f-string拼接日志字段。

代码实现示例

import logging
from datetime import datetime

class FStringFormatter(logging.Formatter):
    def format(self, record):
        # 自定义时间格式(可按需调整)
        record.asctime = datetime.fromtimestamp(record.created).strftime('%Y-%m-%d %H:%M:%S')
        # 用f-string编写日志模板
        return f"[{record.asctime}] {record.levelname:<8} {record.name:<12} {record.message}"

# 配置并测试日志
logger = logging.getLogger('my_logger.mod1')
logger.setLevel(logging.INFO)

file_handler = logging.FileHandler('app.log')
file_handler.setFormatter(FStringFormatter())
logger.addHandler(file_handler)

logger.info("This is an info log message from func1")

配置文件方式适配(dictConfig)

如果习惯用配置文件管理日志,可在dictConfig中指定自定义Formatter类的路径:

import logging.config

logging.config.dictConfig({
    'version': 1,
    'formatters': {
        'fstringFormatter': {
            'class': '__main__.FStringFormatter'  # 替换为你的类所在模块路径
        }
    },
    'handlers': {
        'fileHandler': {
            'class': 'logging.FileHandler',
            'filename': 'app.log',
            'formatter': 'fstringFormatter'
        }
    },
    'loggers': {
        'my_logger.mod1': {
            'handlers': ['fileHandler'],
            'level': 'INFO'
        }
    }
})

内容的提问来源于stack exchange,提问作者Mick Sulley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 01:20:25