322 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			322 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|  | # 📝 日志系统配置示例
 | |||
|  | 
 | |||
|  | ## 概述
 | |||
|  | 
 | |||
|  | 新的日志系统完全基于配置文件,所有配置都在 `config.yaml` 中设置,容器代码保持简洁。 | |||
|  | 
 | |||
|  | ## 🎯 完整配置示例
 | |||
|  | 
 | |||
|  | ```yaml | |||
|  | # 🚀 日志系统配置 - 基于 Zap 官方推荐
 | |||
|  | logger: | |||
|  |     # 基础配置 | |||
|  |     level: "info"                    # 日志级别: debug, info, warn, error, fatal, panic | |||
|  |     format: "json"                   # 输出格式: json, console | |||
|  |     output: "file"                   # 输出方式: stdout, stderr, file | |||
|  |     log_dir: "logs"                  # 日志目录 | |||
|  |     use_daily: true                  # 是否按日分包 | |||
|  |     use_color: false                 # 是否使用彩色输出(仅console格式有效) | |||
|  |      | |||
|  |     # 文件配置 | |||
|  |     max_size: 100                    # 单个文件最大大小(MB) | |||
|  |     max_backups: 5                   # 最大备份文件数 | |||
|  |     max_age: 30                      # 最大保留天数 | |||
|  |     compress: true                    # 是否压缩 | |||
|  |      | |||
|  |     # 高级功能 | |||
|  |     enable_level_separation: true    # 是否启用按级别分文件 | |||
|  |     enable_request_logging: true     # 是否启用请求日志 | |||
|  |     enable_performance_log: true     # 是否启用性能日志 | |||
|  |      | |||
|  |     # 各级别配置(按级别分文件时使用) | |||
|  |     level_configs: | |||
|  |         debug: | |||
|  |             max_size: 50             # 50MB | |||
|  |             max_backups: 3 | |||
|  |             max_age: 7               # 7天 | |||
|  |             compress: true | |||
|  |         info: | |||
|  |             max_size: 100            # 100MB | |||
|  |             max_backups: 5 | |||
|  |             max_age: 30              # 30天 | |||
|  |             compress: true | |||
|  |         warn: | |||
|  |             max_size: 100            # 100MB | |||
|  |             max_backups: 5 | |||
|  |             max_age: 30              # 30天 | |||
|  |             compress: true | |||
|  |         error: | |||
|  |             max_size: 200            # 200MB | |||
|  |             max_backups: 10 | |||
|  |             max_age: 90              # 90天 | |||
|  |             compress: true | |||
|  |         fatal: | |||
|  |             max_size: 100            # 100MB | |||
|  |             max_backups: 10 | |||
|  |             max_age: 365             # 1年 | |||
|  |             compress: true | |||
|  |         panic: | |||
|  |             max_size: 100            # 100MB | |||
|  |             max_backups: 10 | |||
|  |             max_age: 365             # 1年 | |||
|  |             compress: true | |||
|  | ``` | |||
|  | 
 | |||
|  | ## 🔧 环境特定配置
 | |||
|  | 
 | |||
|  | ### 开发环境配置
 | |||
|  | 
 | |||
|  | ```yaml | |||
|  | # 开发环境 - 详细日志,控制台输出
 | |||
|  | logger: | |||
|  |     level: "debug" | |||
|  |     format: "console" | |||
|  |     output: "stdout" | |||
|  |     use_daily: false | |||
|  |     use_color: true | |||
|  |     enable_level_separation: false | |||
|  |     development: true | |||
|  | ``` | |||
|  | 
 | |||
|  | ### 生产环境配置
 | |||
|  | 
 | |||
|  | ```yaml | |||
|  | # 生产环境 - 精简日志,文件输出
 | |||
|  | logger: | |||
|  |     level: "warn" | |||
|  |     format: "json" | |||
|  |     output: "file" | |||
|  |     log_dir: "/app/logs" | |||
|  |     use_daily: true | |||
|  |     use_color: false | |||
|  |     enable_level_separation: true | |||
|  |     development: false | |||
|  |      | |||
|  |     # 生产环境文件配置 | |||
|  |     max_size: 200 | |||
|  |     max_backups: 10 | |||
|  |     max_age: 90 | |||
|  |     compress: true | |||
|  |      | |||
|  |     # 生产环境级别配置 | |||
|  |     level_configs: | |||
|  |         warn: | |||
|  |             max_size: 200 | |||
|  |             max_backups: 10 | |||
|  |             max_age: 90 | |||
|  |             compress: true | |||
|  |         error: | |||
|  |             max_size: 500 | |||
|  |             max_backups: 20 | |||
|  |             max_age: 180 | |||
|  |             compress: true | |||
|  |         fatal: | |||
|  |             max_size: 100 | |||
|  |             max_backups: 10 | |||
|  |             max_age: 365 | |||
|  |             compress: true | |||
|  | ``` | |||
|  | 
 | |||
|  | ## 📊 配置字段说明
 | |||
|  | 
 | |||
|  | ### 基础配置字段
 | |||
|  | 
 | |||
|  | | 字段 | 类型 | 说明 | 默认值 | | |||
|  | |------|------|------|--------| | |||
|  | | `level` | string | 日志级别 | "info" | | |||
|  | | `format` | string | 输出格式 | "json" | | |||
|  | | `output` | string | 输出方式 | "stdout" | | |||
|  | | `log_dir` | string | 日志目录 | "logs" | | |||
|  | | `use_daily` | bool | 是否按日分包 | false | | |||
|  | | `use_color` | bool | 是否使用彩色输出 | false | | |||
|  | 
 | |||
|  | ### 文件配置字段
 | |||
|  | 
 | |||
|  | | 字段 | 类型 | 说明 | 默认值 | | |||
|  | |------|------|------|--------| | |||
|  | | `max_size` | int | 单个文件最大大小(MB) | 100 | | |||
|  | | `max_backups` | int | 最大备份文件数 | 5 | | |||
|  | | `max_age` | int | 最大保留天数 | 30 | | |||
|  | | `compress` | bool | 是否压缩 | true | | |||
|  | 
 | |||
|  | ### 高级功能字段
 | |||
|  | 
 | |||
|  | | 字段 | 类型 | 说明 | 默认值 | | |||
|  | |------|------|------|--------| | |||
|  | | `enable_level_separation` | bool | 是否启用按级别分文件 | false | | |||
|  | | `enable_request_logging` | bool | 是否启用请求日志 | false | | |||
|  | | `enable_performance_log` | bool | 是否启用性能日志 | false | | |||
|  | 
 | |||
|  | ### 级别配置字段
 | |||
|  | 
 | |||
|  | | 字段 | 类型 | 说明 | 默认值 | | |||
|  | |------|------|------|--------| | |||
|  | | `max_size` | int | 单个文件最大大小(MB) | 无 | | |||
|  | | `max_backups` | int | 最大备份文件数 | 无 | | |||
|  | | `max_age` | int | 最大保留天数 | 无 | | |||
|  | | `compress` | bool | 是否压缩 | 无 | | |||
|  | 
 | |||
|  | ## 🚀 配置最佳实践
 | |||
|  | 
 | |||
|  | ### 1. 按环境配置
 | |||
|  | 
 | |||
|  | ```yaml | |||
|  | # 开发环境
 | |||
|  | logger: | |||
|  |     level: "debug" | |||
|  |     format: "console" | |||
|  |     output: "stdout" | |||
|  |     use_color: true | |||
|  |     enable_level_separation: false | |||
|  | 
 | |||
|  | # 测试环境
 | |||
|  | logger: | |||
|  |     level: "info" | |||
|  |     format: "json" | |||
|  |     output: "file" | |||
|  |     use_daily: true | |||
|  |     enable_level_separation: true | |||
|  | 
 | |||
|  | # 生产环境
 | |||
|  | logger: | |||
|  |     level: "warn" | |||
|  |     format: "json" | |||
|  |     output: "file" | |||
|  |     use_daily: true | |||
|  |     enable_level_separation: true | |||
|  |     max_size: 200 | |||
|  |     max_backups: 10 | |||
|  |     max_age: 90 | |||
|  | ``` | |||
|  | 
 | |||
|  | ### 2. 按级别配置
 | |||
|  | 
 | |||
|  | ```yaml | |||
|  | logger: | |||
|  |     enable_level_separation: true | |||
|  |     level_configs: | |||
|  |         # 调试日志 - 小文件,短期保留 | |||
|  |         debug: | |||
|  |             max_size: 50 | |||
|  |             max_backups: 3 | |||
|  |             max_age: 7 | |||
|  |             compress: true | |||
|  |          | |||
|  |         # 信息日志 - 中等文件,中期保留 | |||
|  |         info: | |||
|  |             max_size: 100 | |||
|  |             max_backups: 5 | |||
|  |             max_age: 30 | |||
|  |             compress: true | |||
|  |          | |||
|  |         # 警告日志 - 中等文件,中期保留 | |||
|  |         warn: | |||
|  |             max_size: 100 | |||
|  |             max_backups: 5 | |||
|  |             max_age: 30 | |||
|  |             compress: true | |||
|  |          | |||
|  |         # 错误日志 - 大文件,长期保留 | |||
|  |         error: | |||
|  |             max_size: 200 | |||
|  |             max_backups: 10 | |||
|  |             max_age: 90 | |||
|  |             compress: true | |||
|  |          | |||
|  |         # 致命错误 - 中等文件,长期保留 | |||
|  |         fatal: | |||
|  |             max_size: 100 | |||
|  |             max_backups: 10 | |||
|  |             max_age: 365 | |||
|  |             compress: true | |||
|  | ``` | |||
|  | 
 | |||
|  | ### 3. 性能优化配置
 | |||
|  | 
 | |||
|  | ```yaml | |||
|  | logger: | |||
|  |     # 生产环境性能优化 | |||
|  |     level: "warn"                    # 只记录警告及以上级别 | |||
|  |     format: "json"                   # JSON格式便于日志分析 | |||
|  |     output: "file"                   # 文件输出避免控制台性能影响 | |||
|  |     use_daily: true                  # 按日分包便于管理 | |||
|  |     enable_level_separation: true    # 按级别分文件便于分析 | |||
|  |      | |||
|  |     # 文件轮转优化 | |||
|  |     max_size: 200                    # 较大的文件大小减少轮转频率 | |||
|  |     max_backups: 10                  # 适中的备份数量 | |||
|  |     max_age: 90                      # 90天保留期平衡存储和分析需求 | |||
|  |     compress: true                    # 启用压缩节省存储空间 | |||
|  | ``` | |||
|  | 
 | |||
|  | ## 🔍 配置验证
 | |||
|  | 
 | |||
|  | ### 1. 必需字段
 | |||
|  | 
 | |||
|  | 以下字段是必需的,如果未设置将使用默认值: | |||
|  | 
 | |||
|  | - `level`: 日志级别 | |||
|  | - `format`: 输出格式 | |||
|  | - `output`: 输出方式 | |||
|  | 
 | |||
|  | ### 2. 可选字段
 | |||
|  | 
 | |||
|  | 以下字段是可选的,如果未设置将使用系统默认值: | |||
|  | 
 | |||
|  | - `log_dir`: 日志目录 | |||
|  | - `use_daily`: 是否按日分包 | |||
|  | - `use_color`: 是否使用彩色输出 | |||
|  | - `max_size`: 文件大小限制 | |||
|  | - `max_backups`: 备份文件数量 | |||
|  | - `max_age`: 文件保留天数 | |||
|  | - `compress`: 是否压缩 | |||
|  | 
 | |||
|  | ### 3. 条件字段
 | |||
|  | 
 | |||
|  | 以下字段在特定条件下是必需的: | |||
|  | 
 | |||
|  | - 当 `output: "file"` 时,建议设置 `log_dir` | |||
|  | - 当 `enable_level_separation: true` 时,建议设置 `level_configs` | |||
|  | - 当 `format: "console"` 时,`use_color` 才有效 | |||
|  | 
 | |||
|  | ## 📝 配置迁移指南
 | |||
|  | 
 | |||
|  | ### 从旧配置迁移
 | |||
|  | 
 | |||
|  | 如果您之前使用的是旧版本的日志配置,可以按照以下方式迁移: | |||
|  | 
 | |||
|  | #### 旧配置
 | |||
|  | ```yaml | |||
|  | # 旧版本配置
 | |||
|  | logging: | |||
|  |     level: "info" | |||
|  |     file: "logs/app.log" | |||
|  |     max_size: 100 | |||
|  |     max_backups: 3 | |||
|  | ``` | |||
|  | 
 | |||
|  | #### 新配置
 | |||
|  | ```yaml | |||
|  | # 新版本配置
 | |||
|  | logger: | |||
|  |     level: "info" | |||
|  |     output: "file" | |||
|  |     log_dir: "logs" | |||
|  |     max_size: 100 | |||
|  |     max_backups: 3 | |||
|  |     format: "json" | |||
|  |     use_daily: false | |||
|  | ``` | |||
|  | 
 | |||
|  | ## 🎉 总结
 | |||
|  | 
 | |||
|  | 新的日志系统配置完全基于 `config.yaml` 文件,具有以下特点: | |||
|  | 
 | |||
|  | 1. **配置集中**: 所有日志配置都在一个地方管理 | |||
|  | 2. **环境友好**: 支持不同环境的配置 | |||
|  | 3. **灵活性强**: 支持按级别分文件、按日分包等高级功能 | |||
|  | 4. **性能优化**: 基于 Zap 官方最佳实践 | |||
|  | 5. **易于维护**: 配置结构清晰,易于理解和修改 | |||
|  | 
 | |||
|  | 通过合理的配置,您可以获得高性能、结构化的日志系统,满足开发、测试和生产环境的各种需求! |