Visual C++를 사용하여 이벤트 로그에 항목 쓰기
이 문서에서는 Microsoft .NET Framework 사용하여 운영 체제의 이벤트 로그에 사용자 고유의 항목을 추가하는 방법을 설명합니다.
원래 제품 버전: Visual C++
원본 KB 번호: 815661
요구 사항
Visual Studio .NET
이벤트 로그에 항목 쓰기
이벤트 로깅은 애플리케이션이 중요한 소프트웨어 및 하드웨어 이벤트를 기록할 수 있는 표준 중앙 집중식 방법을 제공합니다. Windows는 로그를 보기 위한 표준 사용자 인터페이스인 이벤트 뷰어 제공합니다. 공용 언어 런타임 EventLog 구성 요소를 사용하면 로컬 및 원격 컴퓨터 모두에서 기존 이벤트 로그에 쉽게 연결하고 이러한 로그에 항목을 쓸 수 있습니다. 기존 로그에서 항목을 읽고 사용자 지정 이벤트 로그를 만들 수도 있습니다. 가장 간단한 형식으로 이벤트 로그에 쓰기에는 샘플 애플리케이션을 만드는 몇 가지 단계가 포함됩니다.
이렇게 하려면 다음 단계를 따르세요.
Visual Studio .NET을 시작합니다.
새 Visual C++ 관리형 C++ 애플리케이션 프로젝트를 만듭니다.
코드에 다음 줄을 추가하여 system.dll 대한 참조를 추가합니다.
#using <system.dll>
코드의
using
뒷부분System
에서 이러한 네임스페이스의 선언을 한정할 필요가 없도록 및System::Diagnostics
네임스페이스에서 지시문을 사용합니다. 다른 선언 앞에 다음 문을 사용할 수 있습니다.using namespace System; using namespace System::Diagnostics;
이벤트 로그에 쓰려면 다음과 같은 몇 가지 정보가 있어야 합니다.
- 메시지
- 쓸 로그의 이름입니다(아직 없는 경우 생성됨).
- 이벤트의 원본을 나타내는 문자열입니다.
단일 이벤트 로그로만 특정 원본을 등록할 수 있습니다. 둘 이상의 로그에 메시지를 쓰려면 여러 원본을 정의해야 합니다.
String^ sSource; String^ sLog; String^ sEvent; sSource = gcnew String("dotNET Sample App1"); sLog = gcnew String("Application1"); sEvent = gcnew String("Sample Event1");
클래스의 두 정적 메서드를
EventLog
사용하여 원본이 있는지 여부와 원본이 없는지 검사 특정 이벤트 로그와 연결된 이 소스를 만듭니다. 지정한 로그 이름이 없으면 첫 번째 항목을 로그에 쓸 때 이름이 자동으로 만들어집니다. 기본적으로 메서드에 로그 이름을CreateEventSource
제공하지 않으면 로그 파일의 이름은 Application Log입니다.if(!EventLog::SourceExists(sSource)) EventLog::CreateEventSource(sSource,sLog);
이벤트 로그에 메시지를 쓰려면 정적 메서드
EventLog.WriteEntry
를 사용할 수 있습니다. 이 메서드에는 여러 가지 오버로드된 버전이 있습니다. 다음 샘플 코드는 가장 간단한 메서드(원본 문자열 및 메시지를 사용함)와 더 복잡한 메서드 중 하나(이벤트 ID 및 이벤트 형식 지정 지원)를 보여 줍니다.EventLog::WriteEntry(sSource,sEvent); EventLog::WriteEntry(sSource, sEvent, EventLogEntryType::Warning, 235);
애플리케이션을 저장합니다. 애플리케이션을 실행한 다음 이벤트 뷰어 애플리케이션 로그인을 검사 새 이벤트를 확인합니다.
Visual C++ .NET의 전체 코드 목록
#include <tchar.h>
#using <system.dll>
#using <mscorlib.dll>
using namespace System;
using namespace System::Diagnostics;
int _tmain()
{
String^ sSource;
String^ sLog;
String^ sEvent;
sSource = gcnew String("dotNET Sample App1");
sLog = gcnew String("Application1");
sEvent = gcnew String("Sample Event1");
if(!EventLog::SourceExists(sSource))
EventLog::CreateEventSource(sSource,sLog);
EventLog::WriteEntry(sSource,sEvent);
EventLog::WriteEntry(sSource, sEvent,
EventLogEntryType::Warning, 234);
return 0;
}
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기