Попытка войти в базу данных SQL Server, но она не работает - PullRequest
0 голосов
/ 11 декабря 2019

Я пытаюсь войти в SQL Server. Из того, что я обнаружил, похоже, что это должно быть правильно, но, похоже, запись не ведется. Можете ли вы увидеть, что я делаю в этом коде? Извините за публикацию кода в виде картинки, он не подходит для меня здесь.

Я пытался попытаться сделать это немного ближе к тому, как это будет на самом деле, но все же безуспешно.

Path where the info should be going to in the database.

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;

        Log.Logger = new LoggerConfiguration()
           .Enrich.FromLogContext()
           .WriteTo.MSSqlServer(connectionString: "",
                 tableName: "Logs"
                , schemaName: "LOG"
                , autoCreateSqlTable: true,
                 restrictedToMinimumLevel: LogEventLevel.Information)
           .CreateLogger();
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddSerilog();

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseMvc();
    }
}

public class ValuesController : ControllerBase
{
    private readonly ILogger<ValuesController> _logger;

    public ValuesController(ILogger<ValuesController> logger)
    {
        _logger = logger;
    }

    // GET api/values
    [HttpGet]
    public ActionResult<IEnumerable<string>> Get()
    {
        _logger.LogInformation($"Start:");
        _logger.LogInformation($"Start:");
        _logger.LogInformation($"Start:");
        _logger.LogInformation($"Start:");
        _logger.LogInformation($"Start:");
        _logger.LogInformation($"Start:");
        _logger.LogInformation($"Start:");
        _logger.LogInformation($"Start:");
        _logger.LogInformation($"Start:");
        _logger.LogInformation($"Start:");
        _logger.LogInformation($"Start:");
        _logger.LogInformation($"Start:");
        return new string[] { "value1", "value2" };
    }
 }

1 Ответ

0 голосов
/ 11 декабря 2019

Ваш код не устанавливает регистратор Serilog по умолчанию, поэтому все вызовы будут потеряны. Вы должны добавить

Log.Logger=logger;`

Это показано на Serilog.AspNetCore странице репо:


    public static int Main(string[] args)
    {
        Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Debug()
            .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
            .Enrich.FromLogContext()
            .WriteTo.Console()
            .CreateLogger();

        try
        {
            Log.Information("Starting web host");
            CreateWebHostBuilder(args).Build().Run();
            return 0;
        }
        catch (Exception ex)
        {
            Log.Fatal(ex, "Host terminated unexpectedly");
            return 1;
        }
        finally
        {
            Log.CloseAndFlush();
        }
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseSerilog(); // <-- Add this line;
}
...