温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何自定义日志格式

发布时间:2026-07-17 12:35:46 来源:亿速云 阅读:104 作者:小樊 栏目:编程语言

自定义日志格式的方法取决于你使用的编程语言或日志框架。下面我以常见的几种场景为例,说明如何自定义日志格式。如果你能告诉我具体语言或框架,我可以给更精确的示例。


一、通用原则

自定义日志格式通常可以设置以下内容:

  • 时间格式
  • 日志级别
  • 线程 / 协程 ID
  • 文件名 / 行号
  • 自定义字段(如 traceId、userId)
  • 输出格式(文本 / JSON)

二、常见示例

✅ 1. Python(logging 模块)

基本自定义格式

import logging

logging.basicConfig(
    format='%(asctime)s [%(levelname)s] %(name)s - %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S',
    level=logging.INFO
)

logging.info("这是一条自定义格式的日志")

输出示例:

2026-01-21 10:30:00 [INFO] root - 这是一条自定义格式的日志

添加文件名和行号

format='%(asctime)s [%(levelname)s] %(filename)s:%(lineno)d - %(message)s'

✅ 2. Java(Logback)

logback.xml 示例

<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
            </pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

✅ 3. Java(Log4j2)

<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger - %msg%n"/>

✅ 4. Node.js(Winston)

const winston = require('winston');

const logger = winston.createLogger({
  format: winston.format.combine(
    winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
    winston.format.printf(info => {
      return `${info.timestamp} [${info.level.toUpperCase()}] ${info.message}`;
    })
  ),
  transports: [new winston.transports.Console()]
});

logger.info('自定义日志格式');

✅ 5. Go(log/slog)

slog 自定义格式

logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{
    ReplaceAttr: func(groups []string, a slog.Attr) slog.Attr {
        if a.Key == slog.TimeKey {
            return slog.Attr{}
        }
        return a
    },
}))
logger.Info("自定义日志")

三、常见占位符说明(以 Python 为例)

占位符 含义
%(asctime)s 时间
%(levelname)s 日志级别
%(message)s 日志内容
%(filename)s 文件名
%(lineno)d 行号
%(threadName)s 线程名

四、建议的最佳实践

✅ 生产环境推荐 JSON 格式日志(便于 ELK / Loki)
✅ 包含 traceId / requestId
✅ 时间统一使用 ISO8601
✅ 避免打印敏感信息(密码、token)


如果你能告诉我:

  • 使用语言(Java / Python / Go / Node / …)
  • 日志框架(logback / log4j / logging / winston / zap)
  • 是否用于 本地 / 生产 / 容器 / 云环境

我可以帮你直接写一份可直接使用的配置模板

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI