Я работаю над. Net Механизм регистрации ядра 2.2. Пока я экспериментировал с журналированием на основе среды. Итак, я создал два новых файла appSettings. json с соответствующими средами вместе с appSettings. json, присутствующими в решении. Один для разработки, другой для производственной среды.
appsettings.json
{
"Logging": {
"LogLevel": {
//"Default": "Debug",
//"System": "Information",
//"Microsoft": "Error"
}
}
}
appsettings.Development. json
{
"Logging": {
"LogLevel": {
"Microsoft": "Information"
}
}
}
appSettings.Production. json
{
"Logging": {
"Console": {
"LogLevel": {
"Microsoft": "Critical"
}
}
}
}
Изменен файл StartUp.cs
public Startup(IConfiguration configuration, IHostingEnvironment env)
{
Configuration = configuration;
var currentEnvironment = env.EnvironmentName;
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{currentEnvironment}.json", optional: true);
}
Метод ведения журнала
public void LogExceptionToConsole()
{
_logger.LogError("This is raised by error");
_logger.LogCritical("This is raised by critical ");
}
И launchSettings. json
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:2131",
"sslPort": 44388
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Production"
}
},
"DemoLoggingApplication": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
Я понимаю, что среда задает c appSettings будет принят наивысший приоритет. И у меня есть два вопроса
1) Имеется ли в окружении спецификация c ведение журнала? Если да, то какие могут быть изменения в приведенных выше логах c.
2) Когда я запускал приложение в режиме разработки на профиле DemoLoggingApplication
. Я вижу все журналы Information,Error & Critical
.
Но когда я изменил значение ASPNETCORE_ENVIRONMENT
с Development
на Production
для DemoLoggingApplication
профиля и запустил приложение, я снова смог увидеть оба журнала типа Error
& Critical
. Кроме того, я установил, что провайдер Console
должен отображать только Critical
журналы типа Microsoft
категории. Я также отображал Errors
журналы.
Хотя я читал документы Microsoft Я не мог понять приоритеты. Может кто-нибудь объяснить мне подробно, почему я вижу оба журнала. Мне не хватает понимания? Пожалуйста, помогите мне.
Заранее спасибо
Обновлен вопрос после ответа Боба Он работал после изменения настроек приложения. json, appsettings.Development. json & appSettings.Production. json
appSettings. json
{
"Logging": {
"LogLevel": {
"Default": "Information"
}
}
}
appsettings.Development. json
{
"Logging": {
"Console": {
"LogLevel": {
"Microsoft": "Information",
"Default": "Information" // newly
}
}
}
}
appSettings.Production. json
{
"Logging": {
"Console": {
"LogLevel": {
"Microsoft": "Critical",
"Default" : "Critical" // newly added line
}
}
}
}
Теперь, когда я изменил среду на Development
, я мог войти в систему с Information
, но только после добавления категории Default
как в разработку, так и в производство.
Я просто хотел узнать, почему это поведение? И каково влияние поддержания appsettings.json -> Logging
при настройках разработки и производства.
Спасибо