You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

经典ASP.NET(非Core)使用Serilog写SQL Server日志无记录问题

Serilog MSSQL Sink 写入SQL Server失败排查方案

以下是针对ASP.NET Framework项目下该问题的可落地排查步骤:

1. 补全基础配置,排除配置缺失问题

首先修正Logger初始化代码,显式指定日志级别、提交规则,同时加控制台输出确认日志正常被采集:

// 先开启Serilog内部日志,输出所有自身报错,直接定位写入失败原因
Serilog.Debugging.SelfLog.Enable(msg => Console.WriteLine($"Serilog内部错误:{msg}"));

Log.Logger = new LoggerConfiguration()
    // 显式指定全局最低采集级别,Debug及以上级别都会被采集
    .MinimumLevel.Debug()
    .WriteTo
    .MSSqlServer(
        connectionString: "Server=DESKTOP-A9EBI4L;Database=SvuCommon_Alternate;Integrated Security=SSPI;",
        sinkOptions: new MSSqlServerSinkOptions { 
            TableName = "EventLog",
            // 测试阶段可设置为1,每条日志立即提交,避免批次缓存导致看不到数据
            BatchPostingLimit = 1,
            // 如果不需要自己建表,开启后会自动创建符合要求的EventLog表
            // AutoCreateTable = true
        })
    // 加控制台输出,先确认日志被Serilog正常采集,排除上层采集问题
    .WriteTo.Console()
    .CreateLogger();

// 测试日志
Log.Information("{Message}","sdfs" );
try
{
    int a = 1, b = 0;
    Log.Debug("The value are {0} and {1}", a, b);
}
catch (Exception ex)
{
    Log.Error(ex, "some Error!");
}

// 注意:如果是Web项目不要在初始化后就调用CloseAndFlush,需要放到Global.asax的Application_End方法中执行
Log.CloseAndFlush();
Console.Out.WriteLine("Done");

2. 检查表结构匹配性

你当前使用的手动建表结构如下:
数据表设计
需要重点确认字段类型是否和Serilog默认要求一致,90%的手动建表写入失败都是TimeStamp字段类型不匹配导致:

  • 必须字段:
    • Id:int自增主键 / bigint自增主键
    • Message:nvarchar(max)
    • MessageTemplate:nvarchar(max)
    • Level:nvarchar(128)
    • TimeStamp:datetimeoffset类型(不是datetime)
    • Exception:nvarchar(max) 允许为空
    • Properties:nvarchar(max) 允许为空
      如果你的TimeStamp字段为datetime类型,直接修改字段类型为datetimeoffset即可解决问题。

3. 检查数据库权限

你使用的是Windows集成身份验证,需要确认程序运行身份有数据库写入权限:

  • 控制台程序:运行程序的Windows账户需要对SvuCommon_Alternate数据库有INSERT权限
  • Web项目:IIS对应应用程序池的标识账户需要对SvuCommon_Alternate数据库有INSERT权限
    测试阶段可暂时替换为SQL身份验证的sa账号连接字符串,排除权限问题。

内容的提问来源于stack exchange,提问作者salma baian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:54:03