问题标签 [go-zap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 如何使用 uber-go/zap 根据日志级别登录到标准输出或标准错误?
我正在尝试使用此包设置日志记录github.com/uber-go/zap
。我需要写:
- 信息记录到标准输出
- 到 stderr 的错误和致命日志
我试图通过这样的设置和构建来做到这zap.Config
一点:
我也试过这种方式:
但所有日志都写入标准输出或标准错误。我怎样才能把它分开?
go - Zap logger 是否支持转义字符 '\n' 和 '\t' 来打印换行 errorVerbose 或 stacktrace
结果
{"level":"error","ts":1635248463.347698,"caller":"cgw-go-utils/main.go:36","msg":"START!","stacktrace":"main.raiseError \n\t/Users/I053322/dev/repo/cgw-go-utils/main.go:36\nmain.main\n\t/Users/I053322/dev/repo/cgw-go-utils/main.go :22\nruntime.main\n\t/usr/local/opt/go/libexec/src/runtime/proc.go:225"}
我想得到逃避的结果
go - 是否可以在运行时更新 zap 记录器的日志级别?
我创建了一个记录器kubebuilder
,它基于 zap 记录器:
现在我想将日志级别更改zapcore.InfoLevel
为运行时。我没有找到任何SetLogLevel
或类似的 API。
我是否需要创建新选项然后设置新级别?
我还需要用sigs.k8s.io/controller-runtime/pkg/log/zap
库设置记录器。记录器的接口来自go-logr
并实现logr.Logger
接口。如果我尝试将其更改为,zapcore.NewCore
我将无法再设置记录器ctrl.SetLogger
。
我想保留更新所有选项zap.Options
并更改日志级别的选项,并且仍然使用来自sigs.k8s.io/controller-runtime/pkg/log/zap
.
可以用
sigs.k8s.io/controller-runtime/pkg/log/zap
and来做sigs.k8s.io/controller-runtime
吗?
go - 如何从 ctrl“sigs.k8s.io/controller-runtime”模拟 zap 记录器?
这就是SetLogger
生产中也使用的功能:
如何更改testLog.Info
缓冲区的输出?
go - go-logr 和 uber 的 zap 详细程度有什么对应关系?
我看到 Uber Zap 实现中有日志级别:
当我在sigs.k8s.io/controller-runtime/pkg/log/zap
记录器中设置级别时使用它,它go-logr
在引擎盖下使用:
但也可以选择使用logr.Logger.V
.
这里的水平值与 Uber Zap 的常量中的值相同吗?( DebugLevel
, InfoLevel
, WarnLevel
, ....)
我也看到了这个:
flag --zap-log-level:Zap 级别以配置日志记录的详细程度。可以是“调试”、“信息”、“错误”或任何大于 0 的整数值之一,对应于增加详细程度的自定义调试级别”</p>
此标志值是否与'szapcore.Level
中的相同?sigs.k8s.io
zap.Options
go - Zap 记录器值
你好我想使用zap全局记录器
现在我正在这样使用
但唯一的问题是由于 uuid 和 msg 的类型而出现错误
并且 msg_f 类型是 []byte 我的问题是如何打印它们,但我不知道应该使用什么
go - 如何为 zap 全局记录器使用省略号
您好我正在尝试将糖记录器更改为全球更长的时间我检查了我可以使用的可能字段但我无法解决我的问题
例如在某些情况下我使用
这是我在大多数情况下使用的,但我有一个不同的情况,就像这样
所以在这种情况下,我没有在每个请求中都有一个主体,所以 params obj 对每个请求都没有相同的打击
我想要的是(这只是一个简单的演示,我知道纵梁不起作用)
go - Zap 全局记录器调试
你好我有两个关于全局记录器的问题
第一个是
我有多个功能,每个功能都在不同的文件中,我打印不同的日志,例如zap.L().Debug("debug")
或zap.L().Info("info")
例如在 /info/user.go
在 /info/books.go
我为每个函数编写了这段代码
我该怎么做才能使此代码全球化并在任何地方使用它?
第二个是,
另外,当我将 from 更改
logger := zap.NewExample()
为
logger := zap.NewProduction()
zap.L().Debug("debug")
不工作我不知道为什么在这里简单的演示游乐场
go - 使记录器可用于 JSON 结构
我有一个看起来像这样的 JSON 结构pkg/response/foobar.go
我对 Go很陌生,我正在尝试集成 Uber 的 Zap 记录器。中pkg/endpoint/route1.go
,我有
然后我希望能够传递正在使用的记录器processRequest
并使其可用于JSONBytes()
. 但是,我不确定将 JSON 结构与方法混合的含义:
然后我可以在其中使用记录器JSONBytes()
。如果我尝试将它作为参数传递给 to JSONBytes(s)
,我会得到
使记录器可用于JSONBytes()
.
go - 如何在单元测试中正确捕获 zap logger 输出
根据 和 的配置zap.NewDevelopmentConfig()
,zap.NewProductionConfig()
我假设 zap 将日志写入stderr
. 但是,我似乎无法在单元测试中捕获输出。
我有以下captureOutput
功能:
它无法捕获 zap 输出,但确实设法从以下位置获取输出fmt.Println(...)
:
我知道在这种情况下使用 zap 观察器,但我的实际用例是测试高度修改的 zap 记录器,因此测试新的记录器zap.Core
会破坏目的。捕获该输出的最佳方法是什么?