问题标签 [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.

0 投票
1 回答
1548 浏览

go - 如何使用 uber-go/zap 根据日志级别登录到标准输出或标准错误?

我正在尝试使用此包设置日志记录github.com/uber-go/zap。我需要写:

  • 信息记录到标准输出
  • 到 stderr 的错误和致命日志

我试图通过这样的设置和构建来做到这zap.Config一点:

我也试过这种方式:

但所有日志都写入标准输出标准错误。我怎样才能把它分开?

0 投票
1 回答
352 浏览

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"}

我想得到逃避的结果

0 投票
1 回答
436 浏览

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吗?

0 投票
1 回答
110 浏览

go - 如何从 ctrl“sigs.k8s.io/controller-runtime”模拟 zap 记录器?

这就是SetLogger生产中也使用的功能:

如何更改testLog.Info缓冲区的输出?

0 投票
1 回答
223 浏览

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.iozap.Options

的文档logr.Logger.V

0 投票
1 回答
49 浏览

go - Zap 记录器值

你好我想使用zap全局记录器

现在我正在这样使用

但唯一的问题是由于 uuid 和 msg 的类型而出现错误

并且 msg_f 类型是 []byte 我的问题是如何打印它们,但我不知道应该使用什么

0 投票
1 回答
36 浏览

go - 如何为 zap 全局记录器使用省略号

您好我正在尝试将糖记录器更改为全球更长的时间我检查了我可以使用的可能字段但我无法解决我的问题

例如在某些情况下我使用

这是我在大多数情况下使用的,但我有一个不同的情况,就像这样

所以在这种情况下,我没有在每个请求中都有一个主体,所以 params obj 对每个请求都没有相同的打击

我想要的是(这只是一个简单的演示,我知道纵梁不起作用)

0 投票
0 回答
52 浏览

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") 不工作我不知道为什么在这里简单的演示游乐场

0 投票
0 回答
56 浏览

go - 使记录器可用于 JSON 结构

我有一个看起来像这样的 JSON 结构pkg/response/foobar.go

我对 Go陌生,我正在尝试集成 Uber 的 Zap 记录器。中pkg/endpoint/route1.go,我有

然后我希望能够传递正在使用的记录器processRequest并使其可用于JSONBytes(). 但是,我不确定将 JSON 结构与方法混合的含义:

然后我可以在其中使用记录器JSONBytes()。如果我尝试将它作为参数传递给 to JSONBytes(s),我会得到

使记录器可用于JSONBytes().

0 投票
1 回答
193 浏览

go - 如何在单元测试中正确捕获 zap logger 输出

根据 和 的配置zap.NewDevelopmentConfig()zap.NewProductionConfig()我假设 zap 将日志写入stderr. 但是,我似乎无法在单元测试中捕获输出。

我有以下captureOutput功能:

它无法捕获 zap 输出,但确实设法从以下位置获取输出fmt.Println(...)

我知道在这种情况下使用 zap 观察器,但我的实际用例是测试高度修改的 zap 记录器,因此测试新的记录器zap.Core会破坏目的。捕获该输出的最佳方法是什么?