无可用服务器时的 Serilog 和 seq

2024-03-21

当使用 Serilog 和 Seq 的应用程序找不到将日志发送到的服务器时,预期的行为是什么?每次尝试记录都会抛出异常吗?

我希望我的应用程序使用 Seq 服务器(如果可用),但如果不可用,仍继续运行并记录到文件。


当使用 Serilog 和 Seq 的应用程序找不到将日志发送到的服务器时,预期的行为是什么?

这取决于您是否使用常规水槽(通过.WriteTo)或审计接收器(通过.AuditTo).

写入常规接收器意味着是安全操作并且永远不会抛出异常,并且这是设计使然 https://github.com/serilog/serilog/wiki/Reliability。因此,发送这些消息时发生的任何异常只会出现在SelfLog如果你启用它。

e.g.

// Write Serilog errors to the Console
Serilog.Debugging.SelfLog.Enable(msg => Console.WriteLine(msg));

当然,上面的例子只是为了说明SelfLog功能...您可以选择是否/在何处/如何显示或存储这些错误消息。

写入审核接收器时,您可能会看到每条失败的消息都会出现错误。

每次尝试记录都会抛出异常吗?

这取决于水槽。如果是Serilog.Sinks.Seq https://github.com/serilog/serilog-sinks-seq, 它是周期性配料水槽 https://github.com/serilog/serilog-sinks-periodicbatching,所以它会尝试分批发送消息X记录事件(X是可配置的),因此如果 Seq 服务器不可用,您可能会看到每个无法发送的批次都会出现错误。

我希望我的应用程序使用 Seq 服务器(如果可用),但如果不可用,仍继续运行并记录到文件。

Seq 接收器具有内存缓冲和重试支持,可以处理短期服务器或网络不可用的情况,这通常足以满足大多数应用程序的需要。

或者,Seq 接收器具有持久的日志传送功能 https://docs.datalust.co/docs/using-serilog#asynchronous-batching-and-durable-log-shipping烘焙后,您可以指定磁盘上的一个文件,它将在磁盘上的文件中存储缓冲消息,因此即使您的应用程序重新启动,它也可以重试。

Log.Logger = new LoggerConfiguration()
    .WriteTo.Seq("https://my-seq-server:5341",
        bufferBaseFilename: @"C:\MyApp\Logs\myapp") // <<<<<<
    .CreateLogger();

最后,另一种选择是使用序列转发器 https://github.com/datalust/seq-forwarder您可以与您的应用程序并排安装(即同一服务器),并将日志直接写入其中,它负责将日志保存到自己的内部本地存储中,并在远程 Seq 服务器可用时将其转发到远程 Seq 服务器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无可用服务器时的 Serilog 和 seq 的相关文章

  • .Net MVC4 文化设置正确,但验证仍然是英语

    我有一个非常基本的 MVC 网站 使用丹麦语 我可以在页面开头设置文化 Layout null Culture da DK 但它已经是正确的 所以我怀疑它是否重要 然后我有我的输入字段 Html EditorFor model gt mod
  • 有没有办法在 .Net 中创建“自托管”网站? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 类似于 WCF 自托管 有没有办法创建一个在控制台应用程序中 自托管 的网站或dll 提出这个问题的方
  • 如何在 Google 日历中创建“recurData”?

    我想使用 Google API 创建日历的重复事件 我正在关注链接 谷歌日历API http code google com apis calendar data 2 0 developers guide dotnet html Creat
  • 如何在 javascript 中使用 .net 资源文件

    无论如何 我可以在 javascript 中访问我的资源文件 resx 吗 如果没有 那么是否有任何解决方法可以用不同语言的 javascript 显示消息 如果您的 javascript 在页面中 您可以使用 var globalReso
  • 如何修改道路网络的 L 系统?

    向大家问好 我目前正在研究道路网络的程序生成 并偶然发现了 L 系统算法 根据我从有关该主题的各种科学论文以及有关该主题的论文的进一步论文中了解到 算法更改为使用 全局目标和局部约束 其中修改所采取的路径以适应地形等输入值和人口密度 现在我
  • 公开 ASP.NET 用户控件中的复杂属性

    我想从自定义 ASP NET 用户控件公开一个复杂的属性 可以通过aspx页面中的控制标签来设置 像这样的事情 public class TestData public int X public int Y public partial c
  • C# 检查闰年

    我想将输入日期 1 年添加到名为完成日期的列中 如果输入日期是闰年 我需要添加 364 天 如果不是 365 天的话 有没有办法在 c 中检查这一点 使用当前日期时间年份并操作闰年 不操作 然后添加天数 Thanks 您可以使用日期时间 I
  • 使用 Mono Cecil 添加 try-catch

    我正在使用 Mono Cecil 在另一个方法中注入代码 我想在我的代码周围添加一个 Try Catch 块 所以我写了一个带有 try catch 块的 HelloWorld exe 并反编译了它 Try Catch 的 Reflecto
  • 测试 WebApi 控制器时如何生成 Asp.net 用户身份

    我正在使用 Web API 2 在 web api 控制器中我使用过GetUserId使用 Asp net Identity 生成用户 ID 的方法 我必须为该控制器编写 MS 单元测试 如何从测试项目访问用户 ID 我在下面附上了示例代码
  • 接收UDP数据包

    假设我的程序通过网络 UDP 发送 1000 字节 它是否保证接收方将 一批 接收 1000 个字节 或者他可能需要执行多次 读取 直到收到完整的消息 如果后者为真 我如何确保同一消息的数据包顺序不会 混淆 按顺序 或者协议可能保证这一点
  • 为 C# 和 C++ 应用程序编写 DLL

    我需要编写几个 DLL 它们都可以从 C 应用程序和 C 应用程序访问 最初 我认为通过用 C 编写 DLL 并从 C 和 C 应用程序链接到它们可以节省时间 精力 这种方法明智吗 还是应该使用 C 编写 DLL 我的建议是在您最舒服的地方
  • 不区分大小写“包含(字符串)”

    有没有办法让下面的返回为真 string title ASTRINGTOTEST title Contains string 似乎没有过载允许我设置区分大小写 目前我将它们都大写 但这很愚蠢 我指的是i18n http en wikiped
  • 移动数组中的元素

    我需要一点帮助 我想将数组中的元素向上移动一个元素 以便新位置 1 包含位置 1 中的旧值 new 2 包含 old 1 依此类推 旧的最后一个值被丢弃 第一个位置的新值是我每秒给出的新值 我使用大小为 10 的数组 uint32 t TE
  • MVC Razor for 循环

    我有这段代码 嵌套在表单帖子内 但我不断收到错误 它缺少结束语 for int i 0 i lt itemsCount i
  • 如何从 .NET DataGridView 控件单元格值写入文本文件?

    我有以下代码应该循环遍历我的所有行DataGridView 并将其所有单元格值写入文本文件 但是 它输出所有行 但仅输出每行的第一个单元格 而不输出其他三个单元格 string file name C test1 txt var objWr
  • 正确重载 stringbuf 以替换 MATLAB mex 文件中的 cout

    MathWorks 目前不允许您使用cout当 MATLAB 桌面打开时 从 mex 文件中读取 因为它们已重定向 stdout 他们当前的解决方法是提供一个函数 mexPrintf 他们要求你改用 http www mathworks c
  • 将对象转换为泛型类型

    我已经有一段时间没有睡觉了 所以这可能比我想象的要容易 我有一个通用类或多或少是这样的 public class Reference
  • 如何在网格视图中突出显示文本的结果? [复制]

    这个问题在这里已经有答案了 可能的重复 如何突出显示某个单词 https stackoverflow com questions 9546761 how can i highlight a word 我有一个网格视图和一个文本框 用于从列中
  • 将 tiff 像素长宽比更改为正方形

    我正在尝试对多页 tiff 文件执行条形码识别 但是 tiff 文件是从传真服务器 我无法控制 发送给我的 该服务器以非方形像素长宽比保存 tiff 这导致图像由于纵横比而被严重挤压 我需要将 tiff 转换为方形像素长宽比 但不知道如何在
  • 生成唯一随机数的智能方法

    我想生成 00000001 到 99999999 范围内的唯一随机数序列 所以第一个可能是 00001010 第二个可能是 40002928 等等 最简单的方法是生成一个随机数并将其存储在数据库中 下次再执行一次并检查数据库中该数字是否已存

随机推荐

  • 如何在jQuery中选择所有本地链接

    我需要选择所有本地链接 无论是否以 path to page http mydomain com path to page https mydomain com path to page 并将它们替换为 path to page 感谢您的帮
  • 在仅附加表中设置版本列

    我们有一个表来存储记录的版本 这些列是 Id Guid VersionNumber int Title nvarchar Description nvarchar etc 保存项目将在表中插入具有相同 ID 和增量版本号的新行 我不确定如何
  • 如何使用attachEvent引用调用者对象(“t​​his”)

    使用方法 attachEvent 在 IE 中 如何引用调用者对象 触发事件的元素 this In normal浏览器 使用 addEventListener 变量this指向元素 而在 IE 中它指向window object 我需要它与
  • Visual Studio 2013 Update 2 无法打开 cshtml

    我安装了新的 VS2013 Update 2 只要我打开 cshtml 文件 VS 就会崩溃 I tried 修复VS 停用所有扩展 devenv exe ResetSkipPkgs 重置所有设置 没有成功 安装 Xamarin 后我遇到了
  • 用Python写的3D OpenGL游戏能好看又运行快吗?

    我计划使用 jMonkeyEngine 在 Java 中编写一个简单的 3D 等轴测视图 游戏 没什么好看的 我只是想学习一些有关 OpenGL 的知识并编写高效的算法 随机地图生成算法 当我计划要做什么时 我开始考虑是否要转向 Pytho
  • System.IdentityModel 和 Microsoft.IdentityModel 之间有什么区别,我应该使用哪一个?

    我刚刚开始尝试编写一个联合声明提供程序 我正在使用http claimsid codeplex com http claimsid codeplex com 示例作为我的模板 因此 我启动 VS2010 开始我自己的项目 我注意到的第一件事
  • Bootstrap 中心导航栏项目

    我知道我可以将导航栏项目向左和向右推送 但如何将它们居中呢 text align center 不起作用 也没有我想到的任何其他事情 您将需要修改导航栏组件的一些 CSS 规则 所以添加一个类center to nav navbar以及以下
  • Sql 视图的流畅 Nhibernate 映射

    我在 asp net mvc3 和 c 中使用 Fluent Nhibernate 我正在按以下方式工作来生成和映射一个类 Mapping using FluentNHibernate Mapping using Com Web Domai
  • 如何使用 Gradle 2.0 下载 javadoc 和 jar 源?

    我正在使用 Gradle 2 0 我应该写什么build gradle这样 javadocs 和源代码也会与 jar 一起下载吗 我猜您的问题与开发工作区有关 以下链接解释了如何使用 IDE 插件在 Gradle 中添加所需的配置 For
  • Android:使用 MotionEvent 在自定义 ViewGroup 中对视图进行拖放定位

    我在创建的自定义 ViewGroup 上定位视图元素时遇到问题 特别是在拖放情况下 我的目标是 Android 2 2 及更高版本 因此我无法真正使用 Android 3 中出现的拖放 API 我的自定义 ViewGroup 称为 Node
  • 如何一般性地比较整个java bean?

    我一直在尝试使用 org apache commons beanutils 库来获取方法 习惯用法来评估相等性all两个实例之间的属性 即 bean 的通用 equals 方法 有没有一种简单的方法可以使用这个库来做到这一点 或者我以错误的
  • MySQL - 将用户排在最高分列表中

    我有一个 MySQL 查询 它选择我的成绩中排名前 3 的球员users表 然后创建一个额外的列 其中分配了它们的排名 SELECT s curRank curRank 1 AS rank FROM users AS s JOIN SELE
  • 如何在 SQL 中更新/插入指定日期范围内的随机日期

    请原谅我 我是一个绝对的新手 我需要 phpmyadmin 中这张表的帮助 我的表有以下列 Primary ID Begin Date End Date Timestamp 如何在 phpmyadmin 中更新具有指定日期范围 例如 一个月
  • 在 C++ 纯虚函数上应用“using”关键字

    B 类重写了 A 类的纯虚函数 print C 类继承了 B 类并具有 using A print 语句 那么为什么 C 类不是抽象类呢 class A public virtual void print 0 class B public
  • 仅在多索引中的第二个索引上使用 .loc

    我有多索引数据框 如下所示 value year name 1921 Ah 40 1921 Ai 90 1922 Ah 100 1922 Ai 7 其中year and name是指数 我想选择名称所在的每一行Ai出现 我努力了df loc
  • 通用 C++ 多维迭代器

    在我当前的项目中 我正在处理多维数据结构 底层文件按顺序存储 即一个巨大的数组 没有向量的向量 使用这些数据结构的算法需要知道各个维度的大小 我想知道是否已在某处以通用方式定义了多维迭代器类 以及是否有任何标准或首选方法来解决此问题 目前
  • 如何在 Kendo 菜单中检索 id 值

    我在我的项目中使用 Kendo 菜单 我想在单击所选项目时检索 id 值 我使用了 onSelect 事件 并且能够检索所选项目的文本 如何检索 id 值 您可以使用 HTML5 数据属性来完成此操作 HTML div class k co
  • python多处理池解释器中的断言错误

    我正在编写一个示例程序来测试 python 2 7 2 中工作线程多处理池的使用情况 这是我在 python ubuntu 解释器中编写的代码 gt gt gt from multiprocessing import Pool gt gt
  • Swift:guard let 和 where - 优先级

    有时 我想用guard结合let where简化我的代码 但我想知道 let 的优先级是什么以及在哪里 例如 class Person func check gt Bool print checking return nil func te
  • 无可用服务器时的 Serilog 和 seq

    当使用 Serilog 和 Seq 的应用程序找不到将日志发送到的服务器时 预期的行为是什么 每次尝试记录都会抛出异常吗 我希望我的应用程序使用 Seq 服务器 如果可用 但如果不可用 仍继续运行并记录到文件 当使用 Serilog 和 S