로깅 - Logging

Logging

설명

Axs FrameworkCastle인터페이스를 구현한 Serilog의 로깅 기능을 기본으로 사용하며 Log4Net, NLog등 다영한 로깅라이브러로 변경 할 수 있습니다.

예제

먼저 로그를 작성하기 위해 Logger 객체를 가져와야합니다.

// 네임스페이스 선언
using Castle.Core.Logging;

public class SampleAppController : ISampleAppController
{
    // 객체 속성 주입을 위해 선언
    public ILogger Logger { get; set; }

    public TaskAppController()
    {
        // 기본값 선언
        Logger = NullLogger.Instance;
    }

    public void CreateSample(CreateSampleDto input)
    {
        // 로그 저장
        Logger.Info("샘플 코드 저장 description : " + input.Description);

        //TODO: 기타 작업 코드 작성
    }
}

위 코드가 실행이 되고 로그 파일을 확인하면 아래와 같이 확인이 가능합니다.

로그 관련 환경 설정

기본 구성의 로그 형식은 다음과 같습니다.

  • 날짜 및 시간 : 로그 라인이 작성된 시간입니다.

  • 로그 수준 : DBG, INF, WRN, ERR, FTL.

  • 로그 텍스트 : 작성하는 실제 로그 텍스트입니다.

  • Properties : 출력의 다른 곳에 표시되지 않는 모든 이벤트 속성 값입니다.

    • 로거 이름 : 일반적으로 로그 라인을 작성하는 클래스 이름입니다.

    • 상관관계 ID : 현재 웹 요청에 대한 로그를 추적하기 위해 Correlation Id 추가합니다.

    • 스레드 번호 : 로그 라인을 작성한 스레드 번호입니다.

    • 예외 상세 : 예외가 발생할경우 구조화된 예외정보 노출

  • 예외 : 예외가 발생할경우 메세지 원문

아래와 같이 응용 프로그램의 Program.csappsettings.json 파일에 정의되어 있습니다.

  • Program.cs로 기본 DEBUG시 Console 로깅이 동작하면 appsettings.json에 정의를 통해서 Override된 설정으로 최종 구성된다.

Serilog은 강력한 로깅 라이브러리입니다. 다른 형식과 다른 대상 (텍스트 파일, 데이터베이스 ...)으로 로그를 저장할 수 있습니다. 최소 로그 수준을 설정하여 로그 저장의 횟수를 지정할 수 있습니다. 자세한 내용은 Serilog의 환경설정 문서(documentation)를 참조하십시오.

마지막으로 Startup.cs 파일에서 appsettings.json 파일과 함께 Serilog의 환경 설정 정보를 사용하도록 합니다.

웹과 호스트 프로젝트에서 초기화 코드를 추가하면 됩니다.

확인

appsettings.json에서 serilog 세셕에서 아래 정보를 확인하고 폴더에서 해당 로그 파일을 확인하면 된다.

로그 파일을 열어 보면 아래와 같은 패턴으로 저장이 되는 것을 확인 할 수 있습니다.

웹 요청에 대한 로그를 추적하기

  • CorrelationId: 297e08af-3194-4700-973c-b93a3d030a92

  • API 호출시 관계된 로그를 분석할수 있습니다.

API추적

Last updated