Revel日志需手动配置级别与输出目标,dev模式默认仅stdout输出INFO+日志且不自动建log目录;应修改app.conf设置log.info.output等路径、添加prefix/flags控制格式、按环境区分level,并确保log目录存在以避免静默丢弃。

要在Revel框架中精确控制日志内容、避免开发时信息淹没或生产环境丢失关键错误,必须手动配置日志级别与输出目标,因为Revel默认仅在dev模式下向标准输出打印INFO及以上级别日志,且不自动创建日志目录。
修改app.conf启用日志分级输出
打开conf/app.conf文件,在[dev]或[prod]区段内添加或修改日志配置项。
将log.info.output = stdout改为log.info.output = log/info.log,使INFO级日志写入文件而非控制台。
【log目录必须存在,否则Revel不会自动创建,日志将静默丢弃】
在[prod]区段中,把log.trace.output = off和log.info.output = off保留,确保高频率低价值日志不落地;同时确认log.warn.output = log/%(app.name)s.log和log.error.output = log/%(app.name)s.log指向同一文件,便于统一排查。
设置日志前缀与时间格式
在[dev]区段中,添加两行:
log.info.prefix = "INFO "
log.info.flags = 10
其中10是标志位组合值(Ltime | Llongfile = 2 | 8),它会让每条INFO日志开头显示形如09:42:17 /app/controllers/app.go:45的时间+文件位置——没有这一步,你只能看到“INFO user login failed”,却不知道哪一行代码触发的。
切换日志级别:从DEBUG到ERROR
方法一:全局调整root级别
在[dev]中设置log.level = DEBUG,该配置会覆盖各日志输出项的独立级别,使所有log.*.output通道都按DEBUG级别收日志。
方法二:精细控制单类日志
例如只让数据库操作日志变详细:添加log.db.output = log/db.log和log.db.level = DEBUG,再在代码中用revel.INFO.Printf("db query: %s", sql)调用时,只有带db前缀的logger才生效。
方法三:运行时临时提级(仅限dev)
启动应用时加参数:revel run -a myapp -d -c conf/app.conf -log.level=TRACE,此参数会覆盖conf中的log.level设置,但[prod]区段完全忽略该参数。
验证日志是否真实写入文件
第一步:确保log/目录已手动创建,权限可写。
第二步:启动Revel应用:revel run -a myapp。
第三步:触发一次控制器动作(如访问/app/index)。
第四步:立即执行tail -f log/info.log,观察是否有新行输出。若无输出,检查app.conf中log.info.output路径是否拼写错误,或确认当前加载的是[dev]而非[prod]区段。


















