Serilog ms sql раковина не пишет в мою таблицу - PullRequest
2 голосов
/ 06 мая 2020

Log.Information("Hello"); не записывает в таблицу. Я использовал базовую c конфигурацию здесь в файле readme, и приемник создал мою таблицу ОК при первом запуске. Я уверен, что у моего пользователя есть разрешение на чтение / запись.

Я ожидаю, что Log.Information("Hello"); добавит строку в таблицу.

Serilog.Debugging.SelfLog.Enable(msg => Debug.WriteLine(msg));
var logDB = @"data source=xxxxxx\SQLEXPRESS;initial catalog=Eng;integrated security=False;persist security info=True;user id=xxxx;password=xxxxxxxx";
 var sinkOpts = new SinkOptions();
 sinkOpts.TableName = "SL24AddInLogging";
 sinkOpts.AutoCreateSqlTable = true;
 var columnOpts = new ColumnOptions();
 columnOpts.Store.Remove(StandardColumn.Properties);
 columnOpts.Store.Add(StandardColumn.LogEvent);
 columnOpts.LogEvent.DataLength = 2048;
 columnOpts.PrimaryKey = columnOpts.TimeStamp;
 columnOpts.TimeStamp.NonClusteredIndex = true;

 var log = new LoggerConfiguration()
     .WriteTo.MSSqlServer(
      connectionString: logDB,
      sinkOptions: sinkOpts,
      columnOptions: columnOpts
 ).CreateLogger();

Я, должно быть, делаю что-то не так. Что?

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Я нашел свою проблему. Раньше, когда я использовал Serilog, я использовал stati c «Log.Information ()», а не мою переменную, объявленную в моем коде при создании регистратора. В этом случае объявленная мной переменная также является "log" - в нижнем регистре.

Log.Information () - плохо.

log.Information () - хорошо.

Edit Кроме того, на случай, если вы столкнетесь с этим. Я использовал версию stati c, чтобы мои журналы были доступны на протяжении всего проекта. Чтобы определить регистратор и сделать его доступным, вы можете использовать следующий шаблон:

var log = new LoggerConfiguration()
 .WriteTo.MSSqlServer(
  connectionString: logDB,
  sinkOptions: sinkOpts,
  columnOptions: columnOpts
      ).CreateLogger();

Log.Logger = log;
0 голосов
/ 07 мая 2020

Есть несколько вещей, которые вы можете сделать для устранения неполадок в Serilog . Некоторые из них перечислены в этом ответе здесь, в StackOverflow:

Serilog MS SQL Sink не записывает журналы в базу данных

...