Rest API Template 만들기 - EP 01 (Create , Swagger, Logging)

2022. 12. 19. 00:00ASPNET/ASPNET 7

반응형

Create

visual studio 2022 를 실행하고 Create a new project 를 선택한다. 

asp.net core web api 선택

Project name 정하기

 

Additional Information 설정

Create 하면 Project 가 생성된다. 

F5 를 누르면 실행 된다. 

위와 같이 swagger 를 통해 test 를 할 수 있는 화면이 나오면 성공한 것이다. 

 

이제 이곳에 Logging 을 처리해 보자

 

아래파일로 이동하자

Controllers/WeatherForecastController.cs

Get 함수를 다음과 같이 수정해 보자

[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
    _logger.LogInformation("Weather Forcast 실행"); // logger 추가
    return Enumerable.Range(1, 5).Select(index => new WeatherForecast
    {
        Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
        TemperatureC = Random.Shared.Next(-20, 55),
        Summary = Summaries[Random.Shared.Next(Summaries.Length)]
    })
    .ToArray();
}

f5 를 눌러 실행 한뒤 swagger 에서  Test 해보자

Console 화면에 아래와 같은 log 가 찍힌다. 

이 Log 는 Console 창에만 나타나니 file 에 저장 하기 위해  3rd party library 를 이용하자

우리는 여기서 Selilog 를 이용할 것이다. 

Selilog 를 이용한 FileLogging

 

Ctrl + ` 또는 View --> Terminal click --> 개발자 명령 프롬프트로 이동

개발자 명령 프롬프트에서 프로젝트 폴더로 이동

**이미 프로젝트 폴더에 있다면 이동하지 않아도 된다.**

(현재 [솔루션명].sln 파일이 있는 폴더라면 [프로젝트명].csproj 파일이 있는 폴더로 이동)

다음 실행

dotnet add package Serilog.AspNetCore

dotnet add package Serilog.Expressions

dotnet add package Serilog.Sinks.Seq

 

Program.cs 에 다음 코드 추가

using Serilog;

var configurationBuilder = new ConfigurationBuilder()
  .AddJsonFile("appsettings.json", false, true)
  .AddJsonFile($"appsettings.Development.json", optional: true)
  .Build();

Log.Logger = new LoggerConfiguration()
  .ReadFrom.Configuration(configurationBuilder)
  .CreateBootstrapLogger();

...
builder.Host.UseSerilog((context, configuration) => configuration
                                                   .ReadFrom
                                                   .Configuration(context.Configuration));

appsettings.json  수정

{
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "Microsoft.Hosting.Lifetime": "Information",
        "System": "Warning"
      }
    },
    "WriteTo": [
      { "Name": "Console" },
      {
        "Name": "File",
        "Args": {
          "path": "./logs/ApiServer.log",
          "rollingInterval": "Day"
        }
      }
    ]
  },
  "AllowedHosts": "*"
}

다시 컴파일 한 후 실행하여  swagger 를 통해 test 해보면 solution 에 logs 폴더가 생긴걸 알수 있다. 

그 아래 ApiServer{yyyyMMdd}.log 파일이 생성되어 있을 것이다. 

log 내용은 Console 에 찍혀 있는 내용이 표시 될 것이다. 

 

관련영상

https://youtu.be/Bg9M4mhIxhY

 

반응형