My.Application.Log
및 My.Log
개체를 사용하면 로깅 및 추적 정보를 로그에 쉽게 쓸 수 있습니다.
메시지 기록 방법
먼저 Switch 속성의 TraceSource 속성을 사용하여 메시지의 심각도를 확인합니다. 기본적으로 심각도 "정보" 이상의 메시지만 로그 TraceListener
컬렉션에 지정된 추적 수신기에 전달됩니다. 그런 다음 각 수신기는 메시지의 심각도를 수신기의 Switch 속성과 비교합니다. 메시지의 심각도가 충분히 높으면 수신기가 메시지를 씁니다.
다음 다이어그램에서는 메서드에 WriteEntry
기록된 메시지가 로그 추적 수신기의 메서드에 WriteLine
전달되는 방법을 보여 줍니다.
애플리케이션의 구성 파일을 변경하여 로그 및 추적 수신기의 동작을 변경할 수 있습니다. 다음 다이어그램은 로그 부분과 구성 파일 간의 대응을 보여줍니다.
메시지가 기록되는 위치
어셈블리에 구성 파일이 없는 경우, 개체 My.Application.Log
와 My.Log
는 DefaultTraceListener 클래스를 통해 애플리케이션의 디버그 출력에 기록합니다. 또한 My.Application.Log
개체는 FileLogTraceListener 클래스를 통해 어셈블리의 로그 파일에 쓰고, My.Log
개체는 WebPageTraceListener 클래스를 통해 ASP.NET 웹 페이지의 출력에 씁니다.
디버그 모드에서 애플리케이션을 실행할 때 Visual Studio 출력 창에서 디버그 출력 을 볼 수 있습니다. 출력 창을 열려면 디버그 메뉴 항목을 클릭하고 Windows를 가리킨 다음 출력을 클릭합니다. 출력 창의 출력 표시 상자에서디버그를 선택합니다.
기본적으로 My.Application.Log
사용자의 애플리케이션 데이터에 대한 경로에 로그 파일을 씁니다.
FullLogFileName 개체의 DefaultFileLogWriter 속성에서 경로를 가져올 수 있습니다. 해당 경로의 형식은 다음과 같습니다.
BasePath
\CompanyName
\ProductName
\ProductVersion
일반적인 값 BasePath
은 다음과 같습니다.
C:\Documents and Settings\username
\응용 프로그램 데이터
의 값CompanyName
ProductName
이며 ProductVersion
애플리케이션의 어셈블리 정보에서 가져옵니다. 로그 파일 이름의 형식은 AssemblyName.log, AssemblyName 은 확장명 없이 어셈블리의 파일 이름입니다. 애플리케이션이 로그에 쓰려고 할 때 원본 로그를 사용할 수 없는 경우와 같이 둘 이상의 로그 파일이 필요한 경우 로그 파일 이름의 양식은 AssemblyName-반복입니다.log. 여기서 iteration
는 양수 Integer
입니다.
컴퓨터 및 애플리케이션의 구성 파일을 추가하거나 변경하여 기본 동작을 재정의할 수 있습니다. 자세한 내용은 자습서: My.Application.Log에서 정보를 기록하는 위치 변경을 참조하세요.
로그 설정 구성
개체에는 Log
애플리케이션 구성 파일 없이 작동하는 기본 구현이 app.config. 기본값을 변경하려면 새 설정을 사용하여 구성 파일을 추가해야 합니다. 더 많은 정보를 확인하려면 연습: My.Application.Log 출력 필터링을 참조하세요.
로그 구성 섹션은 app.config 파일의 주 <system.diagnostics>
노드 안의 <configuration>
노드에 있습니다. 로그 정보는 여러 노드에 정의됩니다.
개체
Log
의 수신기는 DefaultSource라는<sources>
노드에 정의됩니다.Log
개체의 심각도 필터는 DefaultSwitch라는<switches>
노드에 정의됩니다.로그 수신기는 노드에
<sharedListeners>
정의됩니다.
<sources>
, <switches>
, 및 <sharedListeners>
노드의 예는 다음 코드에 나와 있습니다.
<configuration>
<system.diagnostics>
<sources>
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information" />
</switches>
<sharedListeners>
<add name="FileLog"
type="Microsoft.VisualBasic.Logging.FileLogTraceListener,
Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
initializeData="FileLogWriter"
/>
</sharedListeners>
</system.diagnostics>
</configuration>
배포 후 로그 설정 변경
애플리케이션을 개발할 때 해당 구성 설정은 위의 예제와 같이 app.config 파일에 저장됩니다. 애플리케이션을 배포한 후에도 구성 파일을 편집하여 로그를 구성할 수 있습니다. Windows 기반 애플리케이션에서 이 파일의 이름은 applicationName.exe.config실행 파일과 동일한 폴더에 있어야 합니다. 웹 애플리케이션의 경우 프로젝트와 연결된 Web.config 파일입니다.
애플리케이션이 처음으로 클래스의 인스턴스를 만드는 코드를 실행하면 구성 파일에서 개체에 대한 정보를 확인합니다.
Log
개체의 경우, Log
개체에 처음 액세스할 때 이 현상이 발생합니다. 시스템에서는 애플리케이션이 개체를 처음 만들 때 특정 개체에 대해 구성 파일을 한 번만 검사합니다. 따라서 변경 내용을 적용하려면 애플리케이션을 다시 시작해야 할 수 있습니다.
배포된 애플리케이션에서는 애플리케이션이 시작되기 전에 스위치 개체를 다시 구성하여 추적 코드를 사용하도록 설정합니다. 일반적으로 스위치 개체를 켜고 끄거나 추적 수준을 변경한 다음 애플리케이션을 다시 시작하는 작업이 포함됩니다.
보안 고려사항
로그에 데이터를 쓸 때 다음 사항을 고려합니다.
사용자 정보 유출을 방지합니다. 애플리케이션이 승인된 정보만 로그에 쓰는지 확인합니다. 예를 들어 애플리케이션 로그에 사용자 이름이 포함되지만 사용자 암호는 포함하지 않는 것이 허용될 수 있습니다.
로그 위치를 안전하게 만듭니다. 잠재적으로 중요한 정보를 포함하는 모든 로그는 안전한 위치에 저장되어야 합니다.
오해의 소지가 있는 정보를 방지합니다. 일반적으로 애플리케이션은 해당 데이터를 사용하기 전에 사용자가 입력한 모든 데이터의 유효성을 검사해야 합니다. 여기에는 애플리케이션 로그에 데이터를 쓰는 것이 포함됩니다.
서비스 거부를 방지합니다. 애플리케이션이 로그에 너무 많은 정보를 쓰는 경우 로그를 채우거나 중요한 정보를 찾기 어려울 수 있습니다.
참고하십시오
.NET