我是Serilog的新手,我编写了一个小型测试.NET Core应用程序,该应用程序尝试将日志写入本地SQL Server数据库。下面的代码成功创建了该表,但是无论如何我都无法使其写入日志记录。我没有看到任何错误提示存在权限问题。有人有主意吗?
using Serilog;
using Serilog.Sinks.MSSqlServer;
namespace SerilogTest
{
class Program
{
private static ILogger InitSqlLogger()
{
var columnOptions = new ColumnOptions();
columnOptions.Store.Remove(StandardColumn.MessageTemplate);
columnOptions.Store.Remove(StandardColumn.Properties);
columnOptions.Store.Remove(StandardColumn.Exception);
columnOptions.Store.Remove(StandardColumn.Level);
columnOptions.Store.Remove(StandardColumn.TimeStamp);
return new LoggerConfiguration()
.WriteTo.MSSqlServer(@"Server=(local);Database=LogEvents; Integrated Security = SSPI;", "Logs", autoCreateSqlTable: true, columnOptions: columnOptions)
.CreateLogger();
}
private static void WriteLog()
{
var msg = "This is a {message:l}";
Log.Logger.Information(msg, "test");
}
static void Main(string[] args)
{
Log.Logger = InitSqlLogger();
WriteLog();
}
}
}
答案 0 :(得分:1)
很可能在写入SQL Server表时遇到权限问题。
默认情况下,用于日志记录的Serilog接收器是安全的,并且不会引发异常,因此,如果要对正在发生的问题进行故障排除,则应查看Serilog's SelfLog
例如
Serilog.Debugging.SelfLog.Enable(msg => Console.WriteLine(msg));