当我在 .NET 5 中运行应用程序时,Serilog 不会创建日志 SQL 表

2024-01-07

我有 appsettings.json 设置来自动创建日志表"autoCreateSqlTable": true

但是,我检查了 SQL,但找不到该表。我似乎无法找到导致它无法创建和记录信息的原因。

程序.cs:

public class Program
{
    public static void Main(string[] args)
    {
        IConfigurationRoot configuration = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .Build();

        Log.Logger = new LoggerConfiguration()
            .ReadFrom.Configuration(configuration)
            .CreateLogger();

        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>().UseSerilog();
            });
}

应用程序设置.json:

"Serilog": {
    "MinimumLevel": "Information",
    "WriteTo": [
      {
        "Name": "MSSqlServer",
        "Args": {
          "connectionString": "****",
          "tableName": "Log",
          "autoCreateSqlTable": true
        }
      }
    ]
  },

我的项目基于.Net5.0核心 MVC 和项目安装了以下 nuget 软件包。

    <PackageReference Include="Serilog" Version="2.10.0" />
    <PackageReference Include="Serilog.AspNetCore" Version="4.1.0" />
    <PackageReference Include="Serilog.Sinks.MSSqlServer" Version="5.6.0" />

下面的 config 和 program.cs 文件对我有用。

确保 appsettings.json 中的 Serilog 包含此行 "Using":["Serilog.Sinks.MSSqlServer"] ,如下所示:

"Serilog": {
    "Using": [ "Serilog.Sinks.MSSqlServer" ],
    "MinimumLevel": "Information",
    "Override": {
      "Microsoft.EntityFrameworkCore.Database.Command": "Error",
      "Microsoft": "Error",
      "Microsoft.AspNetCore.Mvc": "Warnning"
    },
    "WriteTo": [         
      {
        "Name": "MSSqlServer",
        "Args": {
          "connectionString": "Server=dbserverhost.domain.com;Database=DBName; Trusted_Connection=True; MultipleActiveResultSets=true",
          "schemaName": "dbo",
          "tableName": "AppLogs",
          "autoCreateSqlTable": true
          //,
          //"columnOptionsSection": {
          //  "removeStandardColumns": [ "Properties" ]
          //  //,
          //  //"customColumns": [
          //  //  {
          //  //    "ColumnName": "EventType",
          //  //    "DataType": "int",
          //  //    "AllowNull": false
          //  //  },
          //  //  {
          //  //    "ColumnName": "Release",
          //  //    "DataType": "varchar",
          //  //    "DataLength": 32
          //  //  }
          //  //]
          //}
        }
        ,
        "restrictedToMinimumLevel":  "Warning"
      }
    ]
  }

我的 Program.cs 文件

using Serilog;
public class Program
    {
        public static void Main(string[] args)
        {


            var config = new ConfigurationBuilder()
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                .Build();


            Log.Logger = new LoggerConfiguration()
                .ReadFrom.Configuration(config)
                //.WriteTo.File("Logs/log-.txt", rollingInterval: RollingInterval.Day)
                .CreateLogger();
            
            Log.Information("Hello {Name} from thread {ThreadId}", Environment.GetEnvironmentVariable("USERNAME"), Thread.CurrentThread.ManagedThreadId);

            

            var host = CreateHostBuilder(args).Build();

            using (var scope = host.Services.CreateScope())
            {
                var services = scope.ServiceProvider;
                var loggerFactory = services.GetRequiredService<ILoggerFactory>();
            }

            host.Run();

            // CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .UseSerilog()
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }

Serilog默认创建表,更多详情请点击here https://github.com/serilog/serilog-sinks-mssqlserver#table-definition

CREATE TABLE [Logs] (

   [Id] int IDENTITY(1,1) NOT NULL,
   [Message] nvarchar(max) NULL,
   [MessageTemplate] nvarchar(max) NULL,
   [Level] nvarchar(128) NULL,
   [TimeStamp] datetime NOT NULL,
   [Exception] nvarchar(max) NULL,
   [Properties] nvarchar(max) NULL

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

当我在 .NET 5 中运行应用程序时,Serilog 不会创建日志 SQL 表 的相关文章

  • 我如何理解这个 C 类型声明?

    double bar int double double double double 在查看讲座幻灯片时 我发现了留给学生的练习 用简单的英语来说 什么是类型bar在这个 C 声明中 Please帮助我解决这个问题 我什至不知道从哪里开始
  • 为什么在创建矩阵类时使用向量不好?

    对于我的矩阵类 我做了 template
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • 如何在 C# / .NET 中创建内存泄漏[重复]

    这个问题在这里已经有答案了 可能的重复 托管代码中是否可能存在内存泄漏 特别是 C 3 0 https stackoverflow com questions 6436620 is it possible to have a memory
  • 平滑滚动.net 表单

    您好 我正在 net 中使用表单 并且在运行时动态添加大量链接标签 我将这些链接标签添加到面板并将该面板添加到 winform 当链接标签的数量增加时 表单会显示一个自动滚动条 垂直 现在 当我使用自动滚动向下滚动时 表单在滚动时不会更新其
  • 在 Xamarin 中隐藏软键盘

    如何隐藏软键盘以便在聚焦时显示Entry在 Xamarin forms 便携式表单项目中 我假设我们必须为此编写特定于平台的渲染器 但以下内容不起作用 我创建自己的条目子类 public class MyExtendedEntry Entr
  • EF Core 通过完全替换断开集合导航属性的更新

    使用 EF Core 5 0 我有一个 SPA 页面 可以加载Group实体及其集合Employee来自 API 的实体 var groupToUpdate await context Groups Include g gt g Emplo
  • 我如何在 C# .NET(win7 手机)中使用“DataContractJsonSerializer”读入“嵌套”Json 文件?

    我有一个问题 如果我的 json 文件看起来像这样 Numbers 45387 Words 空间桶 我可以很好地阅读它 但是如果它看起来像这样 Main Numbers 45387 Words 空间桶 某事 数字 12345 单词 克兰斯基
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • 为什么这个没有特殊字符的正则表达式会匹配更长的字符串?

    我正在使用此方法来尝试查找匹配项 例如 Regex Match A2 TS OIL TS OIL RegexOptions IgnoreCase Success 我得到了真实的结果 我很困惑 我认为这应该返回 false 因为模式中没有特殊
  • 时间:2019-03-17 标签:c#ThreadSafeDeepCopy

    我一直在阅读很多其他问题以及大量谷歌搜索 但我一直无法找到明确的解决方案 根据我读过的一些最佳实践 类的静态方法应该创建线程安全的 并且实例成员应该将线程安全留给消费者 我想为该类实现深度复制方法 该类本身还有其他引用类型成员 有没有什么方
  • fprintf() 线程安全吗?

    我正在为野人就餐问题的某些变量编写一个 C 解决方案 现在 我创建线程 每个线程都将 FILE 获取到同一个调试文件 在线程内我正在使用 fprintf 进行一些打印 打印的语句不受任何类型的互斥锁等保护 我没有在调试文件中观察到任何交错行
  • vs2008 c#:Facebook.rest.api如何使用它来获取好友列表?

    如何在此基础上取得进一步的进步 获取好友列表的下一步是什么 string APIKey ConfigurationManager AppSettings API Key string APISecret ConfigurationManag
  • 单例模式和 std::unique_ptr

    std unique ptr唯一地控制它指向的对象 因此不使用引用计数 单例确保利用引用计数只能创建一个对象 那么会std unique ptr与单例执行相同 单例确保只有一个实例属于一种类型 A unique ptr确保只有一个智能指针到
  • 无法在内存位置找到异常源:cudaError_enum

    我正在尝试确定 Microsoft C 异常的来源 test fft exe 中 0x770ab9bc 处的第一次机会异常 Microsoft C 异常 内存位置 0x016cf234 处的 cudaError enum 我的构建环境是 I
  • IEnumerable.Except 不起作用,那么我该怎么办?

    我有一个 linq to sql 数据库 非常简单 我们有 3 个表 项目和用户 有一个名为 User Projects 的连接表将它们连接在一起 我已经有了一个获得的工作方法IEnumberable
  • 使用restsharp序列化对象并将其传递给WebApi而不是序列化列表

    我有一个看起来像的视图模型 public class StoreItemViewModel public Guid ItemId get set public List
  • 跨多个域的 ASP.NET 会话

    是否有合适的 NET 解决方案来在多个域上提供持久服务器会话 即 如果该网站的用户在 www site1 com 下登录 他们也将在 www site2 com 下登录 安全是我们正在开发的程序的一个问题 Thanks 它是否需要在会话中
  • 更改 Windows Phone 系统托盘颜色

    有没有办法将 Windows Phone 上的系统托盘颜色从黑色更改为白色 我的应用程序有白色背景 所以我希望系统托盘也是白色的 您可以在页面 XAML 中执行此操作
  • 矩阵到数组 C#

    这将是转换方阵的最有效方法 例如 1 2 3 4 5 6 7 8 9 into 1 2 3 4 5 6 7 8 9 in c 我在做 int array2D new int 1 2 3 4 5 6 7 8 9 int array1D new

随机推荐

  • 如何使用node.js和Request包禁用HTTP标头中的“withcredentials”?

    使用 Node js 和Request https github com mikeal request来自浏览器的包 通过浏览器化 http browserify org 我使用 CORS 在单独的域上执行 HTTP GET 请求 在服务器
  • Python 列表可变

    我试图使用Python术语来解释为什么会发生以下情况 有人可以解释为什么吗tmp变成 1 2 3 不保持原样 1 2 arr tmp 1 2 arr append tmp print arr 1 2 tmp append 3 print a
  • 用户注销后 PHP 会话不会销毁

    我正在尝试为我的 PHP 应用程序创建身份验证机制 但我很难销毁会话 我尝试取消设置先前在会话数组中设置的身份验证令牌 并通过以下方式销毁会话 session destroy 以及在销毁会话之前完全重置会话数组 我正在调用标头函数 并在函数
  • 为什么 php 将空字节添加到私有和受保护的属性名称中?

    我是 PHP 世界的新手 并从中学习php net http php net 我知道 当将对象转换为数组时 会在私有和受保护的属性名称周围添加空字节班级名称 or 星号键 附加在数组键中私有和受保护的属性名称之前 但我的问题是WHYphp
  • 如何在运行时计算代码的校验和?

    我有一个在计算机上运行的 C NET 应用程序 如何在运行时计算整个代码的校验和 Note 我不想计算正在使用的图像的校验和 而是计算实际的代码部分 我从来没有用过这个 但是 使用反射 您可以导航到获取ILAsByteArray http
  • 编译循环依赖是如何工作的?

    我用 Java 制作了这个示例 但我认为 未经测试 它也适用于其他 所有 语言 您有 2 个文件 第一的 M java public class MType XType x MType x null 其次 另一个文件 在同一目录中 XTyp
  • GHz 至 MIPS?有人粗略估计一下吗?

    从迄今为止我所做的研究中 我了解到 MIPS 高度依赖于正在运行的应用程序或语言 但是谁能给我对 MIPS 中 2 5 Ghz 计算机的最佳猜测 或者任何其他数量的 Ghz C 如果有帮助的话 MIPS 代表 每秒百万条指令 但对于现代计算
  • 显示 Android 的返回堆栈

    为了更好地理解 Android 的行为 我想了解有关返回堆栈概念的更多信息 有没有一种方法可以按返回堆栈中的顺序列出所有活动 这还应该包括所有其他正在运行的任务 我发现 Android Studio 0 5 1 中提供了此信息 查看 gt
  • 如何在android中使用itext库阅读pdf

    我是安卓世界的新手 我厌倦了使用 eclipse IDE 创建一个 android 项目 其中我尝试在 itext 库的帮助下阅读 pdf 文件 该 pgm 未显示任何输出 请告诉我如何更正代码 以便我可以从项目中 Assets 文件夹中存
  • dataLayer.push后数据什么时候发送到google

    我有一个单页电子商务应用程序 需要设置谷歌电子商务渠道 我的应用程序在跟踪代码管理器数据层中设置漏斗步骤 文档中没有任何内容表明数据层实际发送到 Google 跟踪代码管理器的时间 window dataLayer 使用以下内容开始页面 e
  • 如何/可以在 Jasper 报告模板中使用 base64 作为图像源?

    所以在我的 jrxml 文件中我有以下内容
  • PHP 5.3 中 ++ 运算符的奇怪行为

    观看以下代码 a Test echo a 这将输出 Tesu 问题是 为什么 我知道 u 在 t 之后 但为什么它不打印 1 PHP 文档 此外 变量正在递增 或递减将转换为 适当的数值数据 类型 因此 下面的代码将 返回 1 因为字符串
  • 最小化多个仓库发货数量的算法

    我在美国有 10 个仓库 他们每个人可能有也可能没有产品 A B C D E 库存 有人从我的网站订购了全部五件商品 我想尽量减少发送的货件数量 如何确定哪些物品要从哪些仓库发货 例如 某人订购了 A B C D 和 E 我在纽约有 A 和
  • XSL - 评估条件表达式是否是“捷径”?

    给定 XSL If 语句
  • slf4j 没有 toString()

    当你做类似的事情时LOG debug Exported product 在 slf4j 中 它最终会在参数上调用 toString 例如product 由于某些原因 我无法在要用作参数的所有类上重写 toString 有些类来自第三方 ja
  • Angular $locationProvider 与 ASP.NET MVC 路由

    我正在使用 ASP NET MVC 使用 RouteCollection 类 处理路由 但我的前端是用 Angular 编写的 在某些地方我想使用 Angular 的 location 更改 url 并且我希望它支持 HTML5 所以我将这
  • QTimer::singleShot() 在给定对象的父类中查找指定的槽,而不是对象本身

    我对 Qt 还很陌生 我对现有的 Qt 应用程序做了一些简单的修改 但还没有从头开始创建任何应用程序 一般来说 我对 C 的某些方面 类继承等 也没有太多经验 我创建了一个新的基于 Qt4 的 Code Blocks 项目并对模板进行了一些
  • pandas DataFrame 到 html,使用内联样式而不是 CSS

    我正在尝试将 pandas DataFrame 作为 HTML 作为电子邮件的一部分发送 我试图使用类似的东西 import pandas as pd df pd DataFrame 1 1 2 3 2 4 5 6 def style ma
  • 消除 DateTimeFormat 和 Joda 的 DateTimeFormatter 之间细微的空白处理差异

    我们有一些现有的代码 如下所示 DateFormat dateFormats new SimpleDateFormat EEE d MMM yyyy HH mm ss Z Locale ENGLISH new SimpleDateForma
  • 当我在 .NET 5 中运行应用程序时,Serilog 不会创建日志 SQL 表

    我有 appsettings json 设置来自动创建日志表 autoCreateSqlTable true 但是 我检查了 SQL 但找不到该表 我似乎无法找到导致它无法创建和记录信息的原因 程序 cs public class Prog