2016-05-24 55 views
2

にデフォルト、システムおよびMicrosoft loglevelのあるどのようなデフォルトのプロジェクトテンプレートがあるappSettings.jsonで、次のログ設定:ASP.NET MVCコア6

"Logging": { 
    "IncludeScopes": true, 
    "LogLevel": 
    "Default": "Debug", 
    "System": "Information", 
    "Microsoft": "Information" 
    } 
} 

何のためDefaultSystemMicrosoftですか?

答えて

2

SystemMicrosoftの両方のネームスペースアセンブリには、ログレベルが適用されます。 MVC 6アプリケーションを考えてみましょう。project.jsonには、依存関係が"Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final"であると想像してください。このアセンブリのプレフィックスは "Microsoft"です。内部的に、そのロギングはあなたの設定で指定されたレベルで出力されます。

同様に、お使いのアプリケーションでは"Default"がアプリケーションに関連しています。次のことを考えてみましょう:

void FooBar(ILogger logger) 
{ 
    logger.LogCritical("LoglLevel.Critical"); 
    logger.LogDebug("LoglLevel.Debug"); 
    logger.LogError("LoglLevel.Errror"); 
    logger.LogInformation("LoglLevel.Information"); 
    logger.LogTrace("LoglLevel.Trace"); // This message would not be written 
    logger.LogWarning("LoglLevel.Warning"); 
} 

// This is the severity 
public enum LogLevel 
{ 
    Trace, 
    Debug, 
    Information, 
    Warning, 
    Error, 
    Critical, 
    None 
} 

ですから"Microsoft": "Critical"を設定し、内部MVC出会いとlogger.LogErrorメソッドを介して例外をログに記録した場合、それは、ログの出力には書き込まれません。

+0

これらは名前空間またはアセンブリ名に基づいていますか?また、自分の名前をリストに追加できますか? –

+0

https://github.com/aspnet/Logging/blob/dev/samples/SampleApp/Program.cs#L24 –

+0

私はそのコードを「はい」として読んでいます。 –

関連する問題