更改容器运行时的日志级别

Jho*_*n D 5 logging go docker kubernetes

我使用它logrus来记录在 K8S 上运行的应用程序\n我们有 env 变量,我们可以设置log-level它并在重新启动应用程序时更改它\n我们的应用程序正在 k8s 上使用 docker 容器运行\n现在我们想要更改日志级别运行时,即不要\xe2\x80\x99t重新启动容器并更改它\n当它\xe2\x80\x99s运行时,我们可以将其从 更改为errordebug我认为这是合法的请求,但没有\xe2\x80\ x99t 找到任何参考或任何这样做的开源代码,有什么想法吗?

\n\n
package logs\n\nimport (\n    "fmt"\n    "os"\n\n    "github.com/sirupsen/logrus"\n)\n\nconst (\n    AppLogLevel = \xe2\x80\x9cAPP_LOG_LEVEL"\n    DefLvl = "info"\n)\n\n\nvar Logger *logrus.Logger\n\n\nfunc NewLogger() *logrus.Logger {\n\n    var level logrus.Level\n    lvl := getLogLevel()\n    // In case level doesn\'t set will not print any message\n    level = logLevel(lvl)\n    logger := &logrus.Logger{\n        Out:   os.Stdout,\n        Level: level,\n    }\n    Logger = logger\n    return Logger\n}\n\n// use from env\nfunc getLogLevel() string {\n    lvl, _ := os.LookupEnv(AppLogLevel)\n    if lvl != "" {\n        return lvl\n    }\n    return DefLvl\n}\n\nfunc logLevel(lvl string) logrus.Level {\n\n    switch lvl {\n    case "debug":\n        // Used for tracing\n        return logrus.DebugLevel\n    case "info":\n        return logrus.InfoLevel\n    case "error":\n        return logrus.ErrorLevel\n    case "fatal":\n        return logrus.FatalLevel\n    default:\n        panic(fmt.Sprintf("the specified %s log level is not supported", lvl))\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我知道如何更改日志级别,但我需要一种方法来影响记录器更改级别

\n

Sha*_*vit -1

您可以运行该命令kubectl exec -it <container_name> bash并使用容器内的命令行来更改环境变量。您可以通过运行命令export LOG_LEVEL=debugexport LOG_LEVEL=error在容器内来完成。