ho letto che all'interno MVC uso quadro middleware accedendo azione portata withing di contoller:MVC registrazione portata
utilizzare gli ambiti con parsimonia, e solo per azioni con un inizio e di fine limitato. Ad esempio, il framework fornisce un ambito attorno alle azioni MVC. Evita di annidare molti ambiti l'uno dentro l'altro.
E
Un ambito è un tipo IDisposable restituito chiamando il metodo ILogger.BeginScope, che dura dal momento in cui viene creato fino è disposto. Qualsiasi stato di registrazione, ad esempio un ID transazione, è collegato all'ambito quando viene creato.
Sto tentando di utilizzare questa funzione per scrivere alcune informazioni di registro. Ho eseguito passaggi indicati
1) creare Asp.net nucleo MVC app
2) impostare proprietà "IncludeScopes" come "vero" in appsetting.json
3) creare controllore e azione simili:
[Route("api/[controller]")]
public class TodoController : Controller
{
private readonly ILogger<TodoController> _logger;
public TodoController(ILogger<TodoController> logger)
{
_logger = logger;
}
// GET: api/values
[HttpGet]
public IEnumerable<string> Get()
{
_logger.LogInformation(1000, "Listing all items started");
Thread.Sleep(2000);
_logger.LogInformation(1000, "Listing all items finished");
return new string[] { "value1", "value2" };
}
}
Mi aspetto che il flusso dei miei messaggi di registro contenga sempre solo le parti "Elenco di tutti gli articoli avviati" e "Elenco di tutti gli articoli finiti" che non sono separati l'uno dall'altro. Ma quando ho iniziato due richieste nello stesso tempo un flusso di log Got come:
IDRichiesta: xxx Listing tutte le voci iniziato
IDRichiesta: yyy Listing tutte le voci iniziato
IDRichiesta: xxx Elenco di tutti i prodotti lavorati
IDRichiesta : yyy Elenco di tutti gli articoli terminati
Qual è il motivo? È un comportamento corretto e ho frainteso il termine "scope" nel contesto della registrazione?
Non inserire tag nel titolo della domanda, a meno che non sia organico per la conversazione! http://stackoverflow.com/help/tagging – Tseng