다음을 통해 공유


IIS 로그 만들기 및 리디렉션

참고 항목

이 문서의 최신 버전은 아닙니다. 현재 릴리스는 이 문서의 .NET 8 버전을 참조 하세요.

Warning

이 버전의 ASP.NET Core는 더 이상 지원되지 않습니다. 자세한 내용은 .NET 및 .NET Core 지원 정책을 참조 하세요. 현재 릴리스는 이 문서의 .NET 8 버전을 참조 하세요.

Important

이 정보는 상업적으로 출시되기 전에 실질적으로 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적, 또는 묵시적인 보증을 하지 않습니다.

현재 릴리스는 이 문서의 .NET 8 버전을 참조 하세요.

ASP.NET Core 모듈은 aspNetCore 요소의 stdoutLogEnabledstdoutLogFile 특성이 설정된 경우 stdout 및 stderr 콘솔 출력을 디스크로 리디렉션합니다. stdoutLogFile 경로의 모든 폴더는 로그 파일을 만들 때 모듈에 의해 생성됩니다. 앱 풀에는 로그가 기록될 위치에 쓰기 권한이 있어야 합니다(IIS AppPool\{APP POOL NAME}를 사용하여 쓰기 권한 제공, 여기서 자리 표시자 {APP POOL NAME}는 앱 풀 이름임).

프로세스 재생/다시 시작이 발생하지 않는 한 로그는 회전되지 않습니다. 로그에서 사용하는 디스크 공간을 제한하는 것은 호스터의 책임입니다.

stdout 로그는 IIS에서 호스팅할 때 또는 Visual Studio에서 IIS를 위한 개발 시간 지원을 사용할 때 앱 시작 문제를 해결하기 위해서만 사용하는 것이 좋으며, 로컬에서 디버깅하면서 IIS Express를 사용하여 앱을 실행할 때는 권장되지 않습니다.

일반 앱 로깅을 위해 stdout 로그를 사용하지 마세요. ASP.NET Core 앱의 루틴 로깅에는 로그 파일 크기를 제한하고 로그를 회전하는 로깅 라이브러리를 사용합니다. 자세한 내용은 타사 로깅 공급자를 참조하세요.

로그 파일이 만들어질 때 타임스탬프 및 파일 확장명이 자동으로 추가됩니다. 로그 파일 이름은 밑줄로 구분된 경로의 stdoutLogFile 마지막 세그먼트(.log일반적으로stdout)에 타임스탬프, 프로세스 ID 및 파일 확장명()을 추가하여 구성됩니다. 경로가 stdoutLogFile stdout끝나는 경우 2018년 2월 5일 19:42:32에 만들어진 PID가 1934인 앱의 로그에는 파일 이름이 stdout_20180205194132_1934.log있습니다.

stdoutLogEnabled가 false이면 앱 시작 시 발생하는 오류가 캡처되어 최대 30KB의 이벤트 로그로 내보냅니다. 시작 후에는 모든 추가 로그가 삭제됩니다.

다음 샘플 aspNetCore 요소는 상대 경로 .\log\에서 stdout 로깅을 구성합니다. AppPool 사용자에게 identity 제공된 경로에 쓸 수 있는 권한이 있음을 확인합니다.

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="true"
    stdoutLogFile=".\logs\stdout"
    hostingModel="inprocess">
</aspNetCore>

Azure App Service 배포를 위해 앱을 게시할 때는 웹 SDK가 stdoutLogFile 값을 \\?\%home%\LogFiles\stdout으로 설정합니다. %home 환경 변수는 Azure App Service에 의해 호스팅되는 앱에 대해 미리 정의됩니다.

로깅 필터 규칙을 만들려면 ASP.NET Core 로깅 설명서의 코드에서 로그 필터 적용 섹션을 참조하세요.

경로 형식에 대한 자세한 내용은 Windows 시스템의 파일 경로 형식을 참조하세요.

개선된 진단 로그

ASP.NET Core 모듈은 개선된 진단 로그를 제공하도록 구성할 수 있습니다. web.config에서 <handlerSettings> 요소를 <aspNetCore> 요소에 추가합니다. debugLevelTRACE으로 설정하면 진단 정보의 충실도가 높아집니다.

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="false"
    stdoutLogFile="\\?\%home%\LogFiles\stdout"
    hostingModel="inprocess">
  <handlerSettings>
    <handlerSetting name="debugFile" value=".\logs\aspnetcore-debug.log" />
    <handlerSetting name="debugLevel" value="FILE,TRACE" />
  </handlerSettings>
</aspNetCore>

경로의 모든 폴더(logs 앞의 예제)는 로그 파일을 만들 때 모듈에 의해 만들어집니다. 앱 풀에는 로그가 기록될 위치에 쓰기 권한이 있어야 합니다(IIS AppPool\{APP POOL NAME}를 사용하여 쓰기 권한 제공, 여기서 자리 표시자 {APP POOL NAME}는 앱 풀 이름임).

디버그 수준 (debugLevel) 값은 수준과 위치를 모두 포함할 수 있습니다.

수준(최소한에서 가장 자세한 정보까지 순서대로 ):

  • 오류
  • WARNING
  • INFO
  • TRACE

위치(여러 위치가 허용됨):

  • CONSOLE
  • EVENTLOG
  • FILE

처리기 설정은 환경 변수를 통해서도 제공할 수 있습니다.

  • ASPNETCORE_MODULE_DEBUG_FILE: 디버그 로그 파일의 경로입니다. (기본값: aspnetcore-debug.log)
  • ASPNETCORE_MODULE_DEBUG: 디버그 수준 설정입니다.

Warning

배포에서 문제를 해결하는 데 필요한 시간보다 오래 디버그 로깅을 사용하도록 설정하지 마세요. 로그의 크기는 제한되지 않습니다. 디버그 로그를 사용하도록 설정한 대로 두면 사용 가능한 디스크 공간이 소진되어 서버 또는 앱 서비스가 크래시될 수 있습니다.

web.config 파일에 있는 aspNetCore 요소의 예제는 web.config를 사용한 ASP.NET Core 모듈 구성을 참조하세요.