webbutveckling-backend

The markdown behind the website for webbutvckling backend

Automatiserad test och logging

Lektionsplan

Tisdag den 1:e februari 2019

  1. Sammanfattning av Cookies och sessioner
  2. Genomgång av automatiserad test
  3. Genomgång av logging
  4. Genomgång av övning till idag
  5. Projekt 3

Kurslitteratur

Automatiserad test (Unittest)

Logging och felsökning

Extra kurslitteratur

Detta är insperation till material man kan läsa för att öka chansen för VG.

Automatiserad test

Selenium:

Logging

BDD - Behavior-driven development

Övningar

Båda dissa övningar bygger vidra på ert fia API som ni gjorde i projekt 2, om ni inte önsker att använa ert eget fia API kan ni avända detta istället: skjohansen/LudoGameApi.

Använder ni ert eget api, jobba då i en ny branch, använder ni ett anat API gör en fork av det.

Unittest av controller

Skriv ett unittest test av en controller i Web APIet.

Logging med ASP.NET Cores inbyggd logging

I program.cs lägg till ConfigureLogging:

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .ConfigureLogging((hostingContext, logging) =>
        {
            logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
            logging.AddDebug();
            logging.AddConsole();
        })
        .Build();

I appsetting.json kan man konfigurera med ett Logging-objekt:

"Logging": {
    "IncludeScopes": false,
    "LogLevel": {
        "Default": "Warning"
    }
}

Och sen kan man använda sin logging olika ställen, som t.ex. i en Controller, dock måsta man se till att ha en instans av loggingen, detta göras enklas med Depency Injection.

public class HomeController : Controller
{
    private ILogger _logger;
    public HomeController(ILogger<HomeController> logger)
    {
        _logger = logger;
    }

    public IActionResult Index()
    {
        _logger.LogInformation("Request against the action {Action} in {Controller}", "Index", "Home");
    }
}

Inbyggd logging med SEQ

Using ASP.NET Core

Om man vill logga till SEQ kan man måsta man i program.cs lägga till en AddSeq:

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .ConfigureLogging((hostingContext, logging) =>
        {
            logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
            logging.AddDebug();
            logging.AddConsole();
            logging.AddSeq();
        })
        .Build();

I appsetting.json kan man konfigurera sin SEQ med ett seq-objekt:

{
"Logging": {
    "IncludeScopes": false,
    "LogLevel": {
        "Default": "Warning"
    }
},
  "Seq": {
    "ServerUrl": "http://localhost:5341",
    "ApiKey": "1234567890",
    "MinimumLevel": "Trace",
    "LevelOverride": {
      "Microsoft": "Warning"
    }
  }
}

Logging med Serilog

Man kan använda det inbygde logging ramverk i .NET eller ett alternativ som Serilog.

  1. Installera serilog i Web APIet: Getting Started
  2. Installera Seq på din dator: Seq, detta är en log-databas med ett grafisk web gränssnitt
  3. Installera en Seq-sink till serilog i Web APIet: Serilog.Sinks.Seq
  4. Lägg till ett log event i starten av en action i en controller en log i stil med:
    • Log.Information("The time is {Now}", DateTime.Now);
    • Log.Information("Request against the action {Action} in {Controller}", "Index", "Home");
  5. Se till att din erilog är konfiguret till Seq
  6. Starta ditt Web API och navigera till actionen med log eventen

Projekt

Försätt med projekt 3