gpt4 book ai didi

logging - 停止将日志附加到 go.log 文件中

转载 作者:IT王子 更新时间:2023-10-29 01:41:56 25 4
gpt4 key购买 nike

我已经使用 Go 1.5.2 cartridge 在 Openshift 上部署了我的 Go 应用程序。作为一个好习惯,我养成了生成有关应用程序出现的任何问题的日志的习惯。但事实证明,由于提供给我的存储空间有限 (1 GB),这种习惯在 Openshift 环境中代价高昂。日志在使用后的几秒钟内很容易超过 10 MB 标记,我担心如果我不管理日志文件,我的应用程序将用完空间。目前,我正在定期手动清除日志文件。

有什么方法可以停止将日志附加到文件中,或者完全停止生成日志(而不影响我的原始应用程序代码)?我已经尝试通过撤销文件的写入权限,但日志仍然出现。

最佳答案

理想情况下,您会希望使用促进日志级别的记录器。这将允许您根据当前运行时上下文调整日志的详细程度。你可以看看How to implement level based logging in golang题为丰富的信息和包,以方便日志级别。作为开发人员,您可以包含 INFO 和 DEBUG 日志记录语句,当以较低的日志级别部署时,这些语句将不会包含在您的日志记录输出中。

如果您在紧要关头需要禁用当前实现中的日志记录,您可以配置 native go Logger使用 SetOutput(output io.Writer) 的输出编写器功能。默认 Writer log 包使用的是 STDERRioutil 包提供了一个顶级 Discard您可以用来防止记录器写入任何内容的编写器。您必须更新应用程序初始化以根据环境设置记录器的输出。

package main

import (
"fmt"
"io/ioutil"
"log"
)

func main() {
var shouldEnableLogging bool = false

if !shouldEnableLogging {
fmt.Println("Disabled logging")
log.SetOutput(ioutil.Discard)
}

for i := 0; i < 5; i++ {
log.Printf("I logging statement %d", i)
}
}

您可以调整此代码段中的 bool 标志,以在 Go Playground 中的这段代码中查看实际效果.这将防止您的文件空间被日志填满,但您将丢失所有日志,这对任何应用程序都是不可取的。

关于logging - 停止将日志附加到 go.log 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39677779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com