iris框架需手动设置日志级别并自定义格式以满足调试与合规需求:1. 启动前调用setlevel("debug")启用基础日志;2. 可选jsonlogger或zerolog实现结构化输出,须禁用彩色;3. 在run()前手动记录含版本、环境等的启动信息。

在Iris框架中启动HTTP服务器时,默认日志只输出简单信息,无法满足调试、监控或合规性要求,需要精确控制日志格式、时间戳、字段顺序和输出位置。
启用并打印基础启动日志
启动服务前调用 app.Logger().SetLevel("debug"),否则默认不输出监听地址、端口等关键信息。
调用 app.Run(iris.Addr(":8080")) 后,Iris会自动打印类似 [INFO] 2024/05/12 10:23:45 http server started on :8080 的日志行。
这一步必须在 app.Run() 之前设置日志级别,否则日志被静默丢弃。
自定义日志输出格式(结构化JSON)
方法一:使用内置的 iris.JSONLogger
创建 jsonLogger := iris.JSONLogger(os.Stdout),然后传入 app.Logger().SetOutput(jsonLogger)。
注意:【必须关闭彩色输出】,否则JSON会被ANSI转义符污染,导致解析失败——调用 app.Logger().SetColorable(false) 再设置输出。
方法二:完全接管日志器,用第三方库如 zerolog
先禁用Iris默认日志器:app.Logger().SetOutput(ioutil.Discard);再初始化 zerolog.New(os.Stdout).With().Timestamp().Logger() 并绑定到全局变量。
注入自定义启动信息到日志
第一步:定义一个带版本、环境、启动时间的结构体
第二步:在 app.Run() 前手动触发一次日志输出:app.Logger().Infof("service starting: version=%s env=%s uptime=%s", "v1.2.0", os.Getenv("ENV"), time.Now().Format(time.RFC3339))。
第三步:确保该日志发生在 app.Run() 调用之前,否则可能被并发日志冲刷掉或顺序错乱。
这一步不能放在 app.OnStart(...) 回调里——该回调在服务器监听端口后才执行,此时“启动中”状态已结束。











