Visual C++ 사용 하 여 이벤트 로그에 기록 하는 방법

이 문서의 Microsoft Visual C#.NET 버전 307024 를 참조 하십시오.

이 문서의 Microsoft Visual Basic.NET 버전 301279 를 참조 하십시오.


이 문서에서는 다음 Microsoft.NET Framework 클래스 라이브러리 네임 스페이스:
  • 시스템
  • System.Diagnostics

소개

이 문서는 Microsoft.NET Framework 사용 하 여 운영 체제의 이벤트 로그에 직접 항목을 추가 하는 방법을 설명 합니다.

자세한 내용

요구 사항

다음 목록에서는 권장 되는 하드웨어, 소프트웨어, 네트워크 인프라 및 필요한 서비스 팩 설명 합니다.
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 고급 서버 또는 Windows NT 4.0 서버
  • Microsoft Visual Studio.NET
  • Microsoft Visual Studio 2005

이벤트 로그에 쓰기

이벤트 로깅 중요 한 소프트웨어 및 하드웨어 이벤트를 기록할 수 있는 응용 프로그램에 대 한 표준화 되 고 중앙 집중화 된 방법을 제공 합니다. Windows는 로그를 보기 위한 표준 사용자 인터페이스를 제공 합니다: 이벤트 뷰어. 공용 언어 런타임 EventLog 구성 요소를 사용 하 여 로컬 및 원격 컴퓨터에서 기존 이벤트 로그를 쉽게 연결할 수 있으며이 로그에 엔트리를 씁니다. 또한 기존 로그에서 엔트리를 읽을 수 있으며 사용자 지정 이벤트 로그를 만듭니다. 가장 단순한 형태의 이벤트 로그에 쓰기 샘플 응용 프로그램을 만들려면 여러 단계는 포함 됩니다.

이렇게 하려면, 다음 단계를 수행하십시오.
  1. Visual Studio.NET 또는 Visual Studio 2005를 시작 합니다.
  2. 새로운 Visual C++ Managed c + + 응용 프로그램 프로젝트를 만듭니다.

    참고: .NET 2003 Visual C++에서 다음과이 같이 하십시오.
    1. 프로젝트 형식 Visual C++ 프로젝트를 클릭 합니다.
    2. 아래에서
      서식 파일클릭
      콘솔 응용 프로그램 (.NET)입니다.
    Visual C++ 2005에서 다음과이 같이 하십시오.
    1. 프로젝트 형식 Visual C++를 클릭 합니다.
    2. 아래에서
      서식 파일클릭
      CLR 콘솔 응용 프로그램입니다.
  3. 코드에 다음 줄을 추가 하 여 system.dll에 대 한 참조를 추가 합니다.
    #using <system.dll>
  4. Using을 사용 하 여 코드에서이 네임 스페이스의 선언을 한정 하지 않은 시스템System::Diagnostics 네임 스페이스 지시문입니다. 다음 문은 항상 선언 앞에 사용 해야.
    using namespace System;using namespace System::Diagnostics;
  5. 이벤트 로그를 작성 하려면 일부의 정보가 있어야: 메시지, 로그의 이름 (이 만들어지는 존재 하지 않는 경우) 쓰기 및 이벤트의 소스를 나타내는 문자열을 저장할 수 있습니다. 특정 소스는 하나의 이벤트 로그 에서만; 등록할 수 있습니다. 둘 이상의 로그에 메시지를 기록 하려면 여러 소스를 정의 해야 합니다.
    String *sSource;String *sLog;
    String *sEvent;

    sSource = new String("dotNET Sample App1");
    sLog = new String("Application1");
    sEvent = new String("Sample Event1");

  6. EventLog 클래스의 정적 메서드 두 개를 사용 하 여 소스에 있는지 여부와 소스가 존재 하지 않는 경우, 특정 이벤트 로그와 연관 된이 소스를 만드는. 지정한 로그 이름이 없는 경우 첫 번째 항목은 로그에 쓸 때 이름은 자동으로 만들어집니다. 기본적으로 CreateEventSource 메서드는 로그 이름을 지정 하지 않으면 로그 파일 명명 됩니다 응용 프로그램 로그.
    if(!EventLog::SourceExists(sSource)) EventLog::CreateEventSource(sSource,sLog);
  7. 이벤트 로그에 메시지를 작성 하려면 정적 EventLog.WriteEntry메서드를 사용할 수 있습니다. 이 메서드에 여러 오버 로드 된 버전입니다. 다음 코드 예제는 가장 간단한 방법을 보여 줍니다. (소스 문자열과 메시지를이 사용), 고 (이벤트 ID 및 이벤트 유형을 지정할 지원)는 보다 복잡 한 방법 중 하나:
    EventLog::WriteEntry(sSource,sEvent);EventLog::WriteEntry(sSource, sEvent, EventLogEntryType::Warning, 235);
  8. 응용 프로그램을 저장 합니다. 응용 프로그램을 실행 한 다음 새 이벤트를 보려면 이벤트 뷰어에서 응용 프로그램 로그를 확인 합니다.

전체 코드 예제 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 = new String("dotNET Sample App1");
sLog = new String("Application1");
sEvent = new String("Sample Event1");

if(!EventLog::SourceExists(sSource))
EventLog::CreateEventSource(sSource,sLog);

EventLog::WriteEntry(sSource,sEvent);
EventLog::WriteEntry(sSource, sEvent,
EventLogEntryType::Warning, 234);
return 0;
}

전체 코드 예제 Visual C++ 2005

#include <tchar.h>#include <stdafx.h>
#using <system.dll>
#using <mscorlib.dll>

using namespace System;
using namespace System::Diagnostics;

int main()
{
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;
}
속성

문서 ID: 815661 - 마지막 검토: 2017. 2. 7. - 수정: 1

피드백