我可以使用 Serilog 记录到单独的文件吗?

2023-11-26

我的 ASP.NET Core 2.1 应用程序将所有“常用内容”记录到 Serilog 文件接收器 - 即与应用程序相关的内容,例如调试、监控、性能等。

但是,我们还需要将其他数据记录到单独的文件中。与应用程序无关,但与客户相关——这种东西应该进入数据库。然而,由于遗留原因,该系统上没有数据库,因此需要将数据保存到文件中。显然这不能写入同一个日志文件。

我可以写信给FileStream。但我更喜欢使用 Serilog 进行结构化日志记录。

那么有没有办法同时拥有两个记录器呢?它将不同的数据记录到不同的文件接收器。

(如果是这样,我如何将它们注入到我的类中 - 现在我只是注入ILogger<ClassName>.)


我设法做到这一点的最简单方法是实现一个新的独特接口,我可以将其传递到 DI 系统以供控制器使用。
注意:在示例中我使用了Serilog.Sinks.RollingFileNuGet 包。使用您认为合适的任何其他水槽。我使用 asp.net Core 2.1。

新界面

using Serilog;
using Serilog.Core;

public interface ICustomLogger
{
    ILogger Log { get; }
}

public class CustomLogger : ICustomLogger
{
    private readonly Logger _logger;

    public ILogger Log { get { return _logger; } }

    public CustomLogger( Logger logger )
    {
        _logger = logger;
    }
}

Startup.cs 中的实现(.Net 6 之前的版本)

using Serilog;
...
public void ConfigureServices( IServiceCollection services )
{
    ...

    ICustomLogger customLogger = new CustomLogger( new LoggerConfiguration()
        .MinimumLevel.Debug()
        .WriteTo.RollingFile( @"Logs\CustomLog.{Date}.log", retainedFileCountLimit: 7 )
        .CreateLogger() );
    services.AddSingleton( customLogger );
     
    ...
}

在 Program.cs (.Net 6) 中实现

using Serilog;
...

... 
ICustomLogger customLogger = new CustomLogger( new LoggerConfiguration()
    .MinimumLevel.Debug()
    .WriteTo.RollingFile( @"Logs\CustomLog.{Date}.log", retainedFileCountLimit: 7 )
    .CreateLogger() );
builder.Services.AddSingleton( customLogger );
     
...

在控制器中的使用

public class MyTestController : Controller
{
    private readonly ICustomLogger _customLogger;

    public MyTestController( ICustomLogger customLogger )
    {
        _customLogger = customLogger;
    }

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

我可以使用 Serilog 记录到单独的文件吗? 的相关文章

  • 具有不同大小结构的结构数组的 malloc()

    如果每个结构都包含一个大小不同的字符串数组 那么如何正确地 malloc 一个结构数组 因此每个结构可能有不同的大小 并且不可能 realloc 结构体数量 sizeof 结构体名称 after malloc 初始大小 sizeof 结构名
  • 将字节数组转换为托管结构

    更新 这个问题的答案帮助我编写了开源项目GitHub 上的 AlicanC 现代战争 2 工具 https github com AlicanC AlicanC s Modern Warfare 2 Tool 你可以看到我是如何阅读这些数据
  • C 程序从连接到系统的 USB 设备读取数据

    我正在尝试从连接到系统 USB 端口的 USB 设备 例如随身碟 获取数据 在这里 我可以打开设备文件并读取一些随机原始数据 但我想获取像 minicom teraterm 这样的数据 请让我知道我可以使用哪些方法和库来成功完成此操作以及如
  • 在 C# 中生成 HMAC-SHA1

    我正在尝试使用 C 来使用 REST API API 创建者提供了以下用于 hmac 创建的伪代码 var key1 sha1 body var key2 key1 SECRET KEY var key3 sha1 key2 var sig
  • SSL/TLS/HTTPS 站点在 C#/.NET WebBrowser 控件中非常慢,但在 Internet Explorer 中则很好

    背景 我正在修改自动维基浏览器 http en wikipedia org wiki Wikipedia AutoWikiBrowser使用托管在安全服务器上的 MediaWiki 站点 我允许用户通过 C 应用程序中的 WebBrowse
  • (const T v) 在 C 中从来都不是必需的,对吗?

    例如 void func const int i 在这里 const是不必要的 因为所有参数都是按值传递的 包括指针 真的吗 C 中的所有参数确实都是按值传递 这意味着无论您是否包含该参数 实际参数都不会改变const or not 然而
  • C# 正则表达式用于查找 中具有特定结尾的链接

    我需要一个正则表达式模式来查找字符串 带有 HTML 代码 中的链接 以获取文件结尾如 gif 或 png 的链接 示例字符串 a href site com folder picture png target blank picture
  • CultureInfo 的实例(来自相同的文化)根据操作系统而变化

    我有一个网站 上面写着这样的日期 CultureInfo cultureInfo CultureInfo GetCultures CultureTypes AllCultures FirstOrDefault c gt string Equ
  • C++中delete和delete[]的区别[重复]

    这个问题在这里已经有答案了 可能的重复 C 中的删除与删除 运算符 https stackoverflow com questions 2425728 delete vs delete operators in c 我写了一个包含两个指针的
  • 将字符串转换为正确的 URI 格式?

    有没有简单的方法可以将电子邮件地址字符串转换为正确的 URI 格式 Input http mywebsite com validate email 3DE4ED727750215D957F8A1E4B117C38E7250C33 email
  • 劫持系统调用

    我正在编写一个内核模块 我需要劫持 包装一些系统调用 我正在暴力破解 sys call table 地址 并使用 cr0 来禁用 启用页面保护 到目前为止一切顺利 一旦完成 我将公开整个代码 因此如果有人愿意 我可以更新这个问题 无论如何
  • 无法解析远程名称 - webclient

    我面临这个错误 The remote name could not be resolved russgates85 001 site1 smarterasp net 当我请求使用 Web 客户端读取 html 内容时 出现错误 下面是我的代
  • 从 Code::Blocks 运行程序时出现空白控制台窗口 [重复]

    这个问题在这里已经有答案了 当我尝试在 Code Blocks 中构建并运行新程序时 控制台窗口弹出空白 我必须单击退出按钮才能停止它 它对我尝试过的任何新项目 包括 Hello world 都执行此操作 奇怪的是 它对于我拥有的任何旧项目
  • 2D morton 码编码/解码 64 位

    如何将给定 x y 的莫顿代码 z 顺序 编码 解码为 32 位无符号整数 生成 64 位莫顿代码 反之亦然 我确实有 xy2d 和 d2xy 但仅适用于 16 位宽的坐标 产生 32 位莫顿数 在网上查了很多 但没有找到 请帮忙 如果您可
  • 为什么 clang 使用 -O0 生成低效的 asm(对于这个简单的浮点和)?

    我正在 llvm clang Apple LLVM 版本 8 0 0 clang 800 0 42 1 上反汇编此代码 int main float a 0 151234 float b 0 2 float c a b printf f c
  • OpenCV 2.4.3 中的阴影去除

    我正在使用 OpenCV 2 4 3 最新版本 使用内置的视频流检测前景GMG http docs opencv org modules gpu doc video html highlight gmg gpu 3a 3aGMG GPU算法
  • 默认析构函数做了多少事情

    C 类中的默认析构函数是否会自动删除代码中未显式分配的成员 例如 class C public C int arr 100 int main void C myC new C delete myC return 0 删除 myC 会自动释放
  • C++11 动态线程池

    最近 我一直在尝试寻找一个用于线程并发任务的库 理想情况下 是一个在线程上调用函数的简单接口 任何时候都有 n 个线程 有些线程比其他线程完成得更快 并且到达的时间不同 首先我尝试了 Rx 它在 C 中非常棒 我还研究了 Blocks 和
  • 为什么要在 C++ 中使用 typedef?

    可以说我有 set
  • 从 Delphi 调用 C# dll

    我用单一方法编写了 Net 3 5 dll 由Delphi exe调用 不幸的是它不起作用 步骤 1 使用以下代码创建 C 3 5 dll public class MyDllClass public static int MyDllMet

随机推荐

  • PHP PDO:Charset=UTF8:在 dsn 字符串中指定了无效的关键字字符集

    我正在使用 sqlsrv 驱动程序通过 PDO 连接到 MS SQL 服务器 PHP 版本是 5 3 24 工作连接如下所示 dsny sqlsrv Server xx1 Database xx2 usery xx3 passwordy x
  • 成员应该在类中还是构造函数中初始化?

    初始化变量 特别是类级别的对象引用 是一个好习惯吗 请考虑以下示例 public class MyClass private static MyObject myObject public static void main String a
  • PHP CURL 似乎忽略了 cookie jar/文件

    我正在用这个 function cURL url header NULL p NULL ch curl init curl setopt ch CURLOPT HEADER true curl setopt ch CURLOPT NOBOD
  • 如何在android 2.3.3中使用onConfigurationChanged()和newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE

    我在用onConfigurationChanged 在这一点上 当我从风景变为肖像时 它在召唤if newConfig orientation Configuration ORIENTATION PORTRAIT 并从风景转向肖像 但是当我
  • 在 java 应用程序中获取 Chrome 浏览器

    有没有一种方法可以在 Java 应用程序中使用 Chrome 浏览器 类似于 Awesomium 在 C 和 C 应用程序中的工作方式 目前还没有办法将 UI 部分转换为 Java 您应该考虑仅使用准系统 WebKit V8 进行许多 JN
  • 存储过程与无存储过程 - 安全观点

    对于Web应用程序数据库 从安全角度来看only 与仅 sp 解决方案相反的论点是什么 其中应用程序数据库帐户没有表和视图的权限 只能在 sps 上执行 如果有人拦截应用程序数据库帐户 则受到攻击的表面积会比表和视图未暴露时要小得多 非 s
  • WPF:调整圆的大小,保留中心点而不是左上角?

    我想借助滑块调整画布上的圆圈大小 这个圆圈可以通过我在代码后面所做的一些拖放操作在画布上移动 因此它的位置不是固定的 我已将滑块的值绑定到椭圆的高度和宽度 不幸的是 当我使用滑块时 圆圈的大小会调整 其左上角点 实际上是它所在的矩形的左上角
  • 为什么程序员有时将“C++/STL”视为一种单独的语言?

    这似乎是一个微不足道的问题 但却是最近困扰我的一个问题 为什么有些程序员将 C STL 视为另一种语言 STL 是 C 标准库的一部分 因此也是 C 语言的一部分 它不是一个单独的组件 并且它并不单独存在于 C 的范围内 然而 有些人却一直
  • 从 web.config applicationSettings 获取值到 ASP.NET 标记中

    我现在可能完全偏离了轨道 所以我只会在这里问这个问题 以便有人可以帮助我 我想要做的是将 web config 中存储在 applicationSettings 区域中的值插入到我的 aspx 标记中 具体来说 我想从配置中读取 URL 这
  • Selenium 在移动设备上测试是否值得?

    我们一直计划使用 Selenium 对我们的 Web 应用程序进行 UI 测试 我们现在正在重新考虑 据我所知 Android 和 iOS 设备的网络驱动程序并不使用用户实际使用的浏览器 相反 他们使用 WebView 它可能与实际的浏览器
  • 在 Windows 上安装 Node 包时出现 ETIMEDOUT 错误

    我正在尝试使用全新安装的节点中的 npm 在我的 Windows 计算机上安装节点包 但是 我收到 ETIMEDOUT 错误 我检查了一些其他有类似问题的 stackoverflow 问题 几乎所有问题都与代理后面的问题有关 我的情况并非如
  • 从 Rails 3 项目的 lib 目录中访问模型

    我在 lib 目录中有一个文件 它使用模型中定义的一些常量 例如 class User lt ActiveRecord Base MAX EMAIL ADDRESS LENGTH 255 end 然后我在 lib foo rb 中 modu
  • 使用BeautifulSoup获取特定标签后的值

    我很难让 BeautifulSoup 为我抓取一些数据 从此代码示例中访问日期 实际数字 2008 年 的最佳方法是什么 这是我第一次使用 Beautifulsoup 我已经弄清楚如何从页面上刮掉 url 但我无法完全缩小范围以仅选择单词
  • NestJS JwtStrategy使用configService传递密钥

    我有文档示例中的 JwtStrategy 类 https docs nestjs com techniques authentication Injectable export class JwtStrategy extends Passp
  • spring-oauth2 登录成功处理程序

    有没有办法使用 spring oauth2 添加登录成功处理程序 我尝试使用基本身份验证过滤器 但它仅过滤客户端凭据而不是用户凭据 或者我是否需要创建自定义用户身份验证管理器 TIA 该解决方案适用于密码流 也适用于我不确定的其他解决方案
  • Java 中覆盖成员变量(变量隐藏)

    我正在研究 Java 中的重写成员函数 并考虑尝试重写成员变量 所以 我定义了类 public class A public int intVal 1 public void identifyClass System out println
  • 如何让 Active Admin 在登录后与 Pundit 合作

    我已将配置专家适配器授权添加到我的应用程序中 config authorization adapter ActiveAdmin PunditAdapter 当我登录时 电子邮件受保护 凭据我收到此错误 Pundit NotDefinedEr
  • 将 MySQL 连接到 MATLAB?

    我想知道如何将 MySQL 数据库连接到 MATLAB 软件 我下载了 jdbc 连接器 但不知道如何指定路径 我假设您已经创建了一个名为 mybase 的数据库 并且使用没有密码的 root 用户 在现实生活中不要这样做 您必须记住将 m
  • 获取 HTML 页面中带有“position:fixed”的所有元素?

    这样做的原因 我正在调试网页的 css 出现了一些元素 但它们不应该出现 我怀疑这是元素定位的问题 因此我想找到这些定位的元素并一一检查 这个使用的是 jQuery 我希望你能找到它 var find filter function ret
  • 我可以使用 Serilog 记录到单独的文件吗?

    我的 ASP NET Core 2 1 应用程序将所有 常用内容 记录到 Serilog 文件接收器 即与应用程序相关的内容 例如调试 监控 性能等 但是 我们还需要将其他数据记录到单独的文件中 与应用程序无关 但与客户相关 这种东西应该进