问题标签 [logrus]

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 投票
2 回答
19153 浏览

go - Golang logrus - 如何进行集中配置?

我在 Go 应用程序中使用 logrus。我相信这个问题也适用于任何其他日志记录包(不提供基于外部文件的配置)。

logrus 提供了设置各种配置的功能,例如 SetOutput、SetLevel 等。

与我需要从多个源文件/包进行日志记录的任何其他应用程序一样,您似乎需要使用 logrus 在每个文件中设置这些选项。

有没有办法在中心位置的某个地方设置这些选项,以便在整个应用程序中共享。这样,如果我必须更改日志记录级别,我可以在一个地方进行并应用于应用程序的所有组件。

0 投票
1 回答
47 浏览

go - 写入现有文件

这是代码:

它可以工作,但是如果再次运行程序并且已经存在同名文件,则不会写入它,没有错误,没有写入日志,仅此而已。在我看来,这个 os.ModePerm 标志有些东西。

该问题仅在linux上重复。

0 投票
1 回答
1464 浏览

go - 将弹性搜索与 Logrus 集成(golang 日志记录)

logrus用来记录我的 golang 应用程序。但是,我还想将它与 Elastic Search 集成,这样当我创建 logrus 日志条目时,所有日志也会刷新到 Elastic Search。目前所有日志都在一个文件中创建,如下面的代码片段所示。我如何与弹性搜索集成?

我试过elogrus添加一个钩子,但我不知道如何使用它。这是尝试创建弹性搜索客户端的方法。我如何将它与 logrus 实例集成?

早些时候,我使用过诸如Winston设置弹性搜索日志记录非常容易的模块,但不知何故,我发现很少有关于如何将 Golang 日志记录与弹性搜索集成的 golang 文档

0 投票
2 回答
1859 浏览

go - 将 context.Context 传递给所有相关方法,golang

我阅读了有关删除 ThreadLocal 的所有决定,我可以理解。似乎传递request.Context()typecontext.Context赋予了管理范围服务的能力。

我正在使用logrus日志记录并希望记录一个requestId从 midlleware 生成的 udidgin

我知道我可以做这样的事情

并且绕过条目,甚至将条目存储在上下文中,无论如何都可以,但是......我也有一个RedisMongoDb客户端,singletons我用我自己的包包装它们,以方便记录任何传出的 I\O 请求。

因为它们是单例,所以我不能context.Context将它传递给构造函数,但我必须将它传递给每个方法,比如GetKey SetKet等等。

在 Singleton 服务中使用 context \ request id 日志记录的任何常见模式?

0 投票
1 回答
553 浏览

go - Logrus 转义 & 字符

我正在使用 Logrus,但&在其日志中显示字符时遇到了问题:

这打印value\u0026value即十六进制值&而不是&自身

任何人都知道如何解决这个问题?

如果它可能有帮助,这里是记录器的初始化方式:

0 投票
1 回答
159 浏览

go - 处理程序提供服务后,如何从请求对象中取回记录器对象?

我正在尝试学习如何在 Go 中使用中间件。我成功地将带有请求上下文的记录器对象发送到处理程序函数。但是,一旦处理了请求并且记录器对象填充了来自处理函数的数据/错误,我希望能够访问修改后的对象。但根据我目前的实现,我得到一个 nil 对象。

收到的回复:

期待处理函数中添加的“错误”字段。

我知道在这种情况下存在一些概念错误,但无法理解。

所以基本上我想记录所有内容一次,而不是多次,因为只需要在中间件中获取最终字段和所有内容。

0 投票
1 回答
601 浏览

go - 是否可以使用 logrus 日志记录将 'msg' 交换为 'message'

因此,当使用 Logrus 时,我需要日志输出具有message密钥而不是msg密钥,但是当我使用下面的代码时,我得到了两者,但msg都是空的,如何将 logrus 配置为使用“消息”而不是“消息”?

这是留空时的日志输出.Info()//.Info()日志到msg

我想要的是能够使用.Info(message)和拥有

是否可以更改 .Info() 等的默认日志记录键?

0 投票
0 回答
206 浏览

go - Golang - 将恐慌记录到多个记录器和文件

所以我有一个 go 应用程序,它有 3 个不同的日志输出文件,每个文件都有自己的记录器。当应用程序发生恐慌时,恐慌跟踪将始终写入最后一个要打开的记录器,即使恐慌的来源与此特定日志文件的域无关。

发生这种情况是因为为了编写恐慌,我将 stderr 输出重定向到记录器,最后一个被重定向到的记录器就是将要使用的记录器

有没有办法让恐慌总是被写入特定的文件?或以某种方式将其重定向到所有文件?

谢谢

0 投票
2 回答
525 浏览

go - golang如何自动将logrus错误写入supervisord stderr_logfile

我正在使用 supervisord 来运行我的 golang 应用程序。我的supervisord conf看起来像

我的 logrus 设置看起来:

但是我发现两者都登录到我的错误日志中/var/log/app_error.log

如何自动将信息记录到我的应用程序日志/var/log/app.log并将错误记录到错误日志var/log/app_error.log

谢谢

0 投票
0 回答
418 浏览

docker - 通过 google-fluentd 使来自 Docker 容器的 JSON 日志字段在 GCP 日志中可用

首先让我解释一下设置/系统:

我有一台通过 GCP Compute Engine 运行的虚拟 Ubuntu 18.04 机器。我遵循GCP文档并通过apt-get.

在这台机器上,我有一个 golang 网络服务,在 Docker 容器中运行,它使用Logrus输出如下所示的日志:

为了将这些日志从机器/容器获取到 GCP 日志,我创建了一个新的 fluentd 配置文件/etc/google-fluentd/config.d/docker.conf,如fluentd 文档中所述

以及 Docker 守护程序将此容器的日志发送到 fluentd,如Docker 文档中所述:docker run --log-driver=fluentd ...

我面临的限制是日志确实到达了 GCP 日志查看器,但我的服务字段没有正确解析,因此我无法按严重性等进行排序。到达 GCP 的日志如下所示:

我需要采取哪些额外步骤才能让 GCP 日志查看器理解日志?我认为 fluentd 的过滤器/解析器配置足以实现这一点,尤其是关于的部分。