日志内容的多字段输出格式

张开发
2026/4/13 14:49:07 15 分钟阅读

分享文章

日志内容的多字段输出格式
日志内容的多字段输出格式是指将日志信息结构化为多个字段如时间戳、级别、模块、消息等以便于人工阅读和机器解析。以下是主流编程语言和框架中常见的‌多字段日志输出格式‌及其核心字段说明。常见日志字段推荐结构‌timestamp‌日志生成时间建议使用 ‌ISO 8601 格式‌如 2025-04-05T10:30:45.123Z‌。‌level‌日志级别如 DEBUG、INFO、WARN、ERROR、FATAL‌。‌message‌核心事件描述如 “User login failed”‌。‌context‌可选附加上下文信息如 user_id、request_id、ip‌。‌module / class / function / line‌调用位置信息便于追踪来源‌。‌trace_id / span_id‌用于分布式链路追踪‌。不同语言的多字段日志示例Python使用 logging 模块import logginglogging.basicConfig(levellogging.INFO,format%(asctime)s | %(levelname)s | %(funcName)s:%(lineno)d | %(message)s,datefmt%Y-%m-%d %H:%M:%S)logging.info(测试日志)# 输出示例# 2024-04-05 10:20:30 | INFO | sample_function:10 | 这是测试日志Go使用 zap 或 log/sloggologger, _ : zap.NewProduction()defer logger.Sync()logger.Info(用户登录成功,zap.String(user_id, 12345),zap.String(ip, 192.168.1.1),)// 输出为 JSON 格式// {level:info,msg:用户登录成功,user_id:12345,ip:192.168.1.1}PHP使用 Monolog JSON 格式use Monolog\Logger;use Monolog\Handler\StreamHandler;use Monolog\Formatter\JsonFormatter;$logger new Logger(app);$handler new StreamHandler(php://stdout, Logger::INFO);$handler-setFormatter(new JsonFormatter());$logger-pushHandler($handler);$logger-info(User login attempt, [user_id 123,ip $_SERVER[REMOTE_ADDR],success false]);// 输出结构化 JSON 日志输出格式类型对比JSON 是当前‌生产环境首选‌因其结构清晰、易被日志系统如 Logstash、Fluentd、Loki解析‌。多目标输出配置同时写入多个地方可通过 MultiWriter 实现同时输出到控制台和文件import loggingfrom logging.handlers import RotatingFileHandlerhandler_console logging.StreamHandler()handler_file RotatingFileHandler(app.log, maxBytes10*1024*1024, backupCount5)formatter logging.Formatter(%(asctime)s | %(levelname)s | %(message)s)handler_console.setFormatter(formatter)handler_file.setFormatter(formatter)logger logging.getLogger()logger.addHandler(handler_console)logger.addHandler(handler_file)在阿里云等云平台还可通过 ‌日志加工规则‌ 实现不同字段输出到不同目标如 target1 和 target2‌。最佳实践建议‌统一时间格式‌使用 ISO 8601 并包含时区如 Z 表示 UTC‌。‌启用结构化日志JSON‌便于自动化分析和告警‌。‌注入追踪上下文‌如 request_id、trace_id 支持跨服务链路追踪‌。‌按环境调整级别‌开发用 DEBUG生产用 INFO 或 ERROR‌。‌避免敏感信息泄露‌不在日志中记录密码、Token 等‌。如需进一步配置具体语言或框架的日志格式可参考Python logging 官方文档Monolog PHP 日志库Zap Go 日志库

更多文章