[.NET Core] appsettings.json 파일을 각 개발환경에 맞게 사용하기

728x90
반응형

 

 

들어가며

프로젝트를 진행하다 보면, 다양한 개발 환경이 존재 합니다. 

개발환경, 개발QA환경, 정식QA환경, 핫픽스환경 등등등.. 몸담고 있는 회사에서 정한 규칙대로 여러가지 환경이 존재하는데요. 프로젝트 환경에 따라 각 구성 파일을 변경하는 정책도 각 회사마다 차별점이 있는거 같습니다. 

.NET Core 에서는 이러한 환경을 구성하기 위해서 appsetting.json 파일을 제공하는데요. 

이를 이용해서 각 환경에 디버깅 하는 방식을 간략하게 정리했습니다.

정답은 아니니, 참고만 해주시면 되며, 배포 환경은 다른 얘기입니다.

 

 

 


 

 

appsettings 파일 추가

먼저 앱 설정 파일을 추가합니다. 프로젝트의 새 항목을 추가하는 방식으로 appsettings 파일을 추가합니다.

 

 

 

기본적으로 프로젝트를 생성하면, appsetting.Development.json 파일과, appsetting.json 파일이 기본적으로 제공이 되는데요.

저는 환경을 하나더 추가 하는 방식으로 진행을 해봤습니다. 

개발 과정에서 QA도 진행되기 때문에 appsetting.DevQA.json 파일을 json 파일 이름 형식에 맞춰서 생성하였습니다. 

 

 

 

 

 

 

각 구성에 설정값 추가

//	appsettings.json
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "Zone": "Release"
}



//	appsettings.Development.json
{
  "DetailedErrors": true,
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "Zone": "Dev"
}



//	appsettings.DevQA.json
{
  "DetailedErrors": true,
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "Zone": "DevQA"
}

구분을 위해 "Zone" 컬럼을 추가해서, 각 구성을 구분하는 테스트를 했습니다.

 

 

 

 

 

 

 

 

테스트를 위한 Configuration 주입

 

Index.cshtml.cs

namespace WebAppSetting.Pages
{
    public class IndexModel : PageModel
    {
        private readonly ILogger<IndexModel> _logger;
        private readonly IConfiguration _configuration;

        public IndexModel(ILogger<IndexModel> logger, IConfiguration configuration)
        {
            _logger = logger;
            _configuration = configuration;
        }

        public ContentResult OnGet()
        {
            var key = _configuration["Zone"];

            return Content(key);
        }
    }
}

웹 프로젝트로 구성을 했고, 해당 페이지를 호출할 경우 configuration 값을 읽어오기 위해서 종속성을 주입했습니다. 

 

 

 

 

 

 

 

 

 

 

launchsetting.json 파일 수정

각각의 구성에 맞는 설정 파일을 읽어오는 방식 설정에 두가지 방식이 있는데요. 

그중 하나는 launchsetting.json 파일을 수정하는 것이고, 

다른 하나는, 속성의 디버그 UI에서 직접 수정을 하는 방식입니다. 

 

먼저 저는 launchsetting.json 파일에 profiles 에 해당 속성을 추가 했습니다. 

 

릴리즈 환경, Dev 환경, DevQA 환경을 각각 어떠한 Environment 를 사용할지 정의 해 주었습니다. 

ASPNETCORE_ENVIRONMENT 에 appsetting.json 파일을 읽을지 환경변수를 등록해줬습니다.

 

 

 

 

 

UI 화면에서 본다면, 이와 같은 형태가 됩니다.

 

 

 

 

 

 

결과 확인

위처럼 실행을 위해서 해당 profile 를 선택할 수 있는데요. 각 구성에 맞게 실행을 하게 되면 각각의 구성에 맞게 configuration 파일을 읽어 오게 됩니다. 

 

 

Release 환경 (appsetting.json)

 

Dev 환경 (appsetting.Development.json)

 

DevQA 환경 (appsetting.DevQA.json)

 

 

 

 

 

 

 

프로젝트를 개발하는 과정에, 각 환경에 맞는 구성을 읽어들여가며 개발할때, 유용하게 사용하면 됩니다. 

 

 

 

 

 

END






728x90