Começando com ASP.NET 5 – arquivos de configuração, console logger

Vamos continuar com o nosso projeto. Vamos agora adicionar logs para o nosso server. É sempre útil vermos os logs enquanto desenvolvemos. Poder ver algum erro, o que está sendo chamado, etc. Para isso, vamos adicionar a dependência de ILoggerFactory em nosso project.json.

"Microsoft.Extensions.Logging": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final"

E agora podemos adicionar a dependência de ILoggerFactory em nosso método Configure, dentro de Startup.cs:

public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(minLevel:LogLevel.Verbose);
            
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

Com isso, estamos registrando os eventos no console do nosso servidor. Note que agora ao acessarmos uma página, podemos conferir o que está acontecendo por de baixo dos panos:

log

Podemos forçar uma exception para podermos ver o que acontece:

public IActionResult Index()
{
    throw new Exception();
    return View();
}

exception log

Agora que já temos o nosso log funcionando, vamos adicionar um arquivo de configuração para poder adicionar as regras de log. Crie um arquivo chamado config.json:

{
    "Logging": {
        "IncludeScopes": false,
        "LogLevel": {
        "Default": "Verbose",
        "System": "Information",
        "Microsoft": "Information"
        }
    }
}

Agora precisamos acessar essas configurações. Para acessá-la, vamos utilizar a classe ConfigurationBuilder:

private readonly IConfigurationRoot _configuration;

public Startup()
{
    var builder = new ConfigurationBuilder()
        .AddJsonFile("config.json");
                
    _configuration = builder.Build();
}

Agora podemos acessar o conteúdo do arquivo config.json através de IConfigurationRoot:

loggerFactory.AddConsole(_configuration.GetSection("Logging"));

E já que estamos falando sobre log, saber o que está acontecendo, etc. Você reparou que ao causar um erro, nosso sistema retornou uma página em branco? Vamos mudar isso adicionando mais uma dependência:

"Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final"

Agora podemos utilizar o extension method de IApplicationBuilder chamando UseDeveloperExceptionPage:

public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(_configuration.GetSection("Logging"));
            
    app.UseDeveloperExceptionPage();
            
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

Note que agora, ao nos deparamos com uma exception, teremos a seguinte tela:

use developer exception page

Claro que nunca vamos querer que um usuário tenha acesso a tal página, com conteúdo sensível como o caminho que a nossa aplicação está hospedada, e facilitar o acesso a informações como cookies, querystrings, headers, etc. Mas como estamos apenas começando, e em desenvolvimento, não precisamos nos preocupar em quando iremos exibir essa tela.

Note que estou tentando detalhar bastante, focando em pontos que são bem diferentes ao que estávamos acostumados nas versões anteriores do asp.net. Isso acaba tornando os posts mais extensos, e com menos código. No próximo post vou falar sobre a pasta wwwroot e sobre como o asp.net 5 promove a utilização de ferramentas como gulp, grunt, bower, etc. Aos poucos vamos entendendo melhor como está ficando o asp.net 5.

Por hoje é só 😉

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s