问题标签 [getseq]

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 回答
1766 浏览

c# - 使用自定义属性冒泡异常并使用 serilog 记录

我遇到了一种情况,我认为重新抛出异常会很好,向它附加附加信息(例如在自定义异常中的属性中),当进一步捕获堆栈时,将使用表单中的附加信息进行记录Serilog 中消息模板的属性 - 最终目标是我可以过滤 Seq 中的这些属性。这种情况可能是一个警告,我需要重新考虑我的异常处理,但我想我会问这是否已经用 Serilog 完成了?推荐/不鼓励?

更新

这是一个示例场景:

使用 serilog 和 Seq,我们将“部门”属性应用于日志,以便部门可以轻松查看所有可能由其负责的异常。

现在这个场景的应用程序基本上做了两件事:

  • 第一步:查询数据。
  • 第 2 步:如果第 1 步中没有异常,请将其发布到其他地方。

在第 1 步的几层深处,有一个特殊的例外,我知道这是特定部门的责任。因此,我想在记录该异常时将部门属性应用于该异常,但同时将其进一步捕获到堆栈中,以便该异常阻止其他所有内容的继续。另外,我只想记录一次异常。

我目前的方法是使用可以保存日志属性的字典定义自定义异常:

因此,当我捕获一个异常时,我知道这是一个特定部门的职责,我将它作为 ExtPropertiesException 或作为继承它的异常重新抛出,将原始异常作为内部异常附加。

然后备份一般步骤所在的堆栈,我有一个问题:

这似乎正在做我需要的事情,但是在其他地方重复之前知道这是否是最佳实践会很棒。

我最初是在捕获异常时记录日志并应用属性,然后只返回 false 或 null 以指示失败并放弃未来的步骤,但是我发现单元测试很困难,因为我无法确定类型来自方法之外的错误。

谢谢

0 投票
2 回答
1154 浏览

logging - 如何使用 ServiceStack.Logging ILog 记录消息相关 ID?

我对我现在使用的当前日志记录解决方案非常满意,它是由 NLOG 实现的 ServiceStack 接口。我使用的 NLOG 目标如下:

xsi:type="控制台"

xsi:type="调试器"

xsi:type="文件"

xsi:type="序列"

特别重要的是Seq,它是类固醇的日志接收器,是我的生命线,可以实时了解我的服务发生的事情。查询结构化日志的能力非常棒,以至于现在我想查询 Seq 日志以查找具有相同相关 ID 的所有消息,根据这篇文章,这可以通过丰富器实现:

使用 ServiceStack 接口,我看不到这样做的方法,而是必须通过使每个日志语句在消息中包含相关性 ID 来伪复制它。ie _log.Warn("CorrelationId:{0} Campaign => no trackingId found".Fmt(request.CorrelationId));

是否可以让correlationId 成为一等公民/财产,以便Seq 让我通过它查询?

基于@paaschpas 答案的更新

鉴于如果您在记录器接口上使用 xxxxFormat 方法(非常重要),您现在可以使用它并在序数位置提供参数(有点脆弱),例如

这将按 corrId 过滤的 Seq在一天结束时给你这个,我的朋友们足以满足我的需要。

0 投票
1 回答
153 浏览

c# - 未在 Serilog 中记录的日志属性

例如,我有 function doSomething(string a, string b, string c)。我想记录函数的执行。我想做这样的事情:

避免在消息中写入参数,因为字符串可能很长。此功能类似于.Enrich.WithProperty("PropertyName", Value). 但我不能在 Logger 构造函数中执行此操作。记录写入SEQ.

0 投票
1 回答
106 浏览

web-services - 使用 WebService 记录客户端日志输出 NoDB

我有一个在 Intranet 上运行的 WPF 应用程序,与数据库的所有通信都是通过 REST Web 服务完成的。由于出于审计目的,我需要将用户活动(从信息到致命日志的日志)存储到 NoDb 实例(Seq 或 RavenDB)。我已经看到了这个线程,并且似乎完成了部分工作。如何将这些信息发送到 Seq /RavenDB?他们公开 API 吗?

另一个问题是关于可靠性的,您认为拥有冗余/平衡审计 Web 服务的最佳方法是什么?最好有一个不需要太多努力的配置

谢谢

0 投票
1 回答
1558 浏览

azure - Serilog Seq Sink 并不总是捕获事件

我在 Azure 实例(Windows Server 2012 R2 Datacenter)上运行 Seq,并从本地工作站上运行的控制台应用程序使用 Serilog 进行日志记录。我配置了 3 个接收器 - 文件、控制台和序列。我也在 dnxcore50 上运行(以防你认为我的设置不够狡猾)。我所有的事件都显示在控制台和文件中 100% 的时间。Seq 仅在 5 次或更多运行中捕获大约 1 个事件,也就是说,它将捕获运行的所有事件或不捕获任何事件。我正在使用免费的单用户许可证来评估 Seq,但我没有发现任何迹象表明存在任何会导致这种行为的限制。

我已经在记录器上设置了 SelfLog.Out,但是除了我添加的测试行之外什么都没有记录,以确保自记录至少可以写入指定的文件。

有什么建议么?这是否只是处于最前沿,使用预发布所有内容的副作用(尽管在这种情况下,我希望事情会持续失败)?

0 投票
2 回答
872 浏览

logging - Seq API key issues

We are currently adopting Serilog & Seq - amazing products so far, by the way - and the following API key related questions arose (I think they are quite closely related and concise so I'd rather post them together):

  1. Is there any property automatically stored in the event identifying the API key?

    Our first approach is to add an applied property to each API key. Specifically, we add an "App" property containing the copy-pasted API key title applied property.

  2. Are event types global or local to each API key?

    From the documentation, I understand that the same template logged with different API keys will have the same event type - therefore being "global":

    Working with message templates is verbose though, so Seq produces a 32-bit hash of the message template and makes this available in the @EventType built-in property. (Source: official docs)

  3. Can the API key token be specified instead of being automatically generated?

    The motivation is avoiding having to update the code / configs after installing a new instance of Seq. More so when we understand that backing up is not supported when upgrading the server version:

    The version must be identical to the one used when creating the backup. (Source: official docs)

0 投票
1 回答
2692 浏览

c# - 如何使用 serilog 自定义异常输出

我使用 Serilog 作为我的日志框架(使用 Seq 作为我的日志接收器)。记录异常时,我使用的是:

我的应用程序大量使用了 async/await 方法。当发生未处理的异常时,堆栈跟踪很难阅读。有一个 nuget 包可以清理异步堆栈跟踪(https://github.com/aelij/AsyncFriendlyStackTrace)。这将创建一个扩展方法,让您可以访问修改/干净的堆栈跟踪:

我希望能够在将堆栈跟踪写入 Seq 之前使用此库来拦截堆栈跟踪,而是记录干净/修改后的堆栈跟踪。

Serilog/Seq 有没有办法控制发送到日志接收器的错误字符串的确切输出?

0 投票
1 回答
1743 浏览

serilog - Serilog with Seq - 添加属性而不放置在消息文本中

我有一个具有多个属性的对象,这些属性与我网站上刚刚发生的事件有关。

我想记录这个事件,并让它的每个属性出现在 Seq - 作为属性。但是想要从实际的日志消息文本中省略大部分属性 - 所以我不希望它们出现在消息模板中。v

如果我这样做:

在 Seq 中直接针对日志亮起的唯一属性是 @event 属性。它实际上看起来像这样:

在此处输入图像描述

所以我尝试了这个:

但我对这种方法的担忧是,由于这种方法会被触发很多次,我不希望每次都创建一个新的丰富对象实例——因为我喜欢保持正在创建的对象的数量通常尽可能低.. 只是因为我担心 GC 的影响(也许我的担心是没有根据的?)。

这是实现我想要的(即使用浓缩器)的正确/正确方法还是我错过了什么?

干杯!

0 投票
1 回答
624 浏览

serilog - Serilog Seq 输出模板

我是 Serilog 和 Seq 的新手。对不起初学者的问题。

我想要一个在 Serilog 中似乎可用于控制台的输出模板,但我似乎无法在 WriteTo.Seq 参数中对其进行配置。

我是否遗漏了某些东西,或者这是不可用的,还是有其他方法可以做到这一点?

我希望创建一个模板常量并将格式全部保存在一个地方。

TIA

0 投票
1 回答
12999 浏览

serilog - 在调用 Log.CloseAndFlush() 之前,Serilog 不会将日志写入 Seq

当我从 WinForm/web 应用程序登录时,Serilog 和 Seq 工作正常。我只有在使用控制台应用程序时才会遇到问题。不写 Log.CloseAndFlush()是行不通的。以下是我的 LoggerConfiguration

有没有办法在不调用的情况下进行日志记录,Log.CloseAndFlush()以便它在控制台应用程序中与 seq、serilog 一起使用。