none
Acceder al appsettings desde Program RRS feed

  • Pregunta

  • Hola.

    Quiero configurar Serilog en un Identity Server con algunos valores establecidos en el appsettings.{Environment}.json.

    Tengo lo siguiente en el Program.cs, pero no sé cómo hacer para coger un objeto IConfiguration desde aquí para poder leer los valores del archivo y poder asignarlos:

    public class Program
    {
    	public static int Main(string[] args)
    	{
    		bool enabled = Configuration.GetValue<bool>("Serilog_Settings:Enabled");
                string tableName = Configuration.GetValue<string>("Serilog_Settings:TableName");
                string schemaName = Configuration.GetValue<string>("Serilog_Settings:SchemaName");
                bool autoCreateSqlTable = Configuration.GetValue<bool>("Serilog_Settings:AutoCreateSqlTable");
                int batchPostingLimit = Configuration.GetValue<int>("Serilog_Settings:BatchPostingLimit");
                TimeSpan batchPeriodo = TimeSpan.Parse(Configuration.GetValue<string>("Serilog_Settings:BatchPeriod"));
    
                var columnOpts = new ColumnOptions();
                columnOpts.Store.Remove(StandardColumn.Properties);
                columnOpts.Store.Add(StandardColumn.LogEvent);
                columnOpts.LogEvent.DataLength = 2048;
                columnOpts.PrimaryKey = columnOpts.Id;
    
                var sinkOpts = new MSSqlServerSinkOptions
                {
                    TableName = tableName,
                    SchemaName = schemaName,
                    AutoCreateSqlTable = autoCreateSqlTable,
                    BatchPostingLimit = batchPostingLimit,
                    BatchPeriod = batchPeriodo
                };
    
                Log.Logger = new LoggerConfiguration()
                            .MinimumLevel.Debug()
                            .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
                            .Filter.ByExcluding(_ => !enabled)
                            .WriteTo
                            .MSSqlServer(
                                connectionString: Configuration.GetConnectionString("Cnx01"),
                                sinkOptions: sinkOpts,
                                columnOptions: columnOpts
                            )
                            .CreateLogger();
    
    		CreateHostBuilder(args).Build().Run();
    	}
    
    	public static IHostBuilder CreateHostBuilder(string[] args) =>
    		Host.CreateDefaultBuilder(args)
    		.ConfigureAppConfiguration((hostingContext, config) =>
    		{
    			config
    				.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath)
    				.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
    				.AddJsonFile($"appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true)
    				.AddEnvironmentVariables();
    		})
    		.ConfigureWebHostDefaults(webBuilder =>
    		{
    			webBuilder.UseStartup<Startup>();
    		});
    }

    Me dan una mano, por favor. Muchas gracias

    • Editado eduar2083 jueves, 21 de enero de 2021 20:14
    jueves, 21 de enero de 2021 20:10

Todas las respuestas

  • Hola,

    Gracias por levantar tu consulta en los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    jueves, 21 de enero de 2021 23:08
    Moderador