C#으로 Windows Service 만들기 (5)
개요
마지막 기사 C#으로 Windows Service 만들기 (4) 계속.
이벤트 로그를 구현합니다.
환경
Windows 10
Visual Studio 2017 커뮤니티
절차
이벤트 로그는 Windows에서 관리되는 로그입니다.
출력한 로그 정보는 이벤트 뷰어에서 볼 수 있습니다.
ServiceBase 클래스의 파생 클래스(기본이면 Service1.cs라는 파일. 내 프로젝트에서는 ServiceTest.cs)를 디자이너에서 엽니다.
⇒ 솔루션 탐색기에서 해당 파일을 더블 클릭합니다.
그런 다음 도구 상자에서 구성 요소에있는 "EventLog"를 선택하고,
디자이너로 드래그 앤 드롭합니다.
그런 다음 삭제한 EventLog 구성 요소를 클릭하여 속성 탭을 엽니다.
이름을 적절하게 변경합니다.
여기에서는 ServiceEventLog로 하고 있습니다.
지금까지 (구성 요소 추가)는 EventLog 클래스의 인스턴스 (ServiceEventLog)를 생성합니다.
⇒ServiceTest.Designer.cs에 정의되어 있네요.
그런 다음 ServiceTest.cs 코드를 표시하고 생성자에 처리를 추가합니다.
ServiceTest.cs ServiceTest()
{
InitializeComponent();
// ---------- 以下が追加した処理 ----------
ServiceEventLog = new System.Diagnostics.EventLog();
if (!System.Diagnostics.EventLog.SourceExists("ServiceTest"))
{
System.Diagnostics.EventLog.CreateEventSource(
"ServiceTest", "Application");
}
ServiceEventLog.Source = "ServiceTest";
ServiceEventLog.Log = "Application";
// ----------------------------------------
}
이제 이벤트 로그를 출력할 준비가 되었습니다.
시도에 마지막으로 Override하여 생성한 OnPause나 OnContinue의 이벤트 핸들러내에 로그 출력 처리를 추가해 보겠습니다.
로그 출력은 WriteEntry 함수를 사용합니다.
ServiceTest.cs protected override void OnContinue()
{
ServiceEventLog.WriteEntry("OnContinue Called.");
base.OnContinue();
}
protected override void OnPause()
{
ServiceEventLog.WriteEntry("OnPause Called.");
base.OnPause();
}
이벤트 뷰어를 시작하고 로그를 확인해 봅니다.
추가한 이벤트 로그가 제대로 저장됩니다.
다음에는 주기 실행 처리의 구현에 대해 씁니다.
Reference
이 문제에 관하여(C#으로 Windows Service 만들기 (5)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yossihard/items/09133e2170c888fd78e0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Windows 10
Visual Studio 2017 커뮤니티
절차
이벤트 로그는 Windows에서 관리되는 로그입니다.
출력한 로그 정보는 이벤트 뷰어에서 볼 수 있습니다.
ServiceBase 클래스의 파생 클래스(기본이면 Service1.cs라는 파일. 내 프로젝트에서는 ServiceTest.cs)를 디자이너에서 엽니다.
⇒ 솔루션 탐색기에서 해당 파일을 더블 클릭합니다.
그런 다음 도구 상자에서 구성 요소에있는 "EventLog"를 선택하고,
디자이너로 드래그 앤 드롭합니다.
그런 다음 삭제한 EventLog 구성 요소를 클릭하여 속성 탭을 엽니다.
이름을 적절하게 변경합니다.
여기에서는 ServiceEventLog로 하고 있습니다.
지금까지 (구성 요소 추가)는 EventLog 클래스의 인스턴스 (ServiceEventLog)를 생성합니다.
⇒ServiceTest.Designer.cs에 정의되어 있네요.
그런 다음 ServiceTest.cs 코드를 표시하고 생성자에 처리를 추가합니다.
ServiceTest.cs ServiceTest()
{
InitializeComponent();
// ---------- 以下が追加した処理 ----------
ServiceEventLog = new System.Diagnostics.EventLog();
if (!System.Diagnostics.EventLog.SourceExists("ServiceTest"))
{
System.Diagnostics.EventLog.CreateEventSource(
"ServiceTest", "Application");
}
ServiceEventLog.Source = "ServiceTest";
ServiceEventLog.Log = "Application";
// ----------------------------------------
}
이제 이벤트 로그를 출력할 준비가 되었습니다.
시도에 마지막으로 Override하여 생성한 OnPause나 OnContinue의 이벤트 핸들러내에 로그 출력 처리를 추가해 보겠습니다.
로그 출력은 WriteEntry 함수를 사용합니다.
ServiceTest.cs protected override void OnContinue()
{
ServiceEventLog.WriteEntry("OnContinue Called.");
base.OnContinue();
}
protected override void OnPause()
{
ServiceEventLog.WriteEntry("OnPause Called.");
base.OnPause();
}
이벤트 뷰어를 시작하고 로그를 확인해 봅니다.
추가한 이벤트 로그가 제대로 저장됩니다.
다음에는 주기 실행 처리의 구현에 대해 씁니다.
Reference
이 문제에 관하여(C#으로 Windows Service 만들기 (5)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yossihard/items/09133e2170c888fd78e0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ServiceTest()
{
InitializeComponent();
// ---------- 以下が追加した処理 ----------
ServiceEventLog = new System.Diagnostics.EventLog();
if (!System.Diagnostics.EventLog.SourceExists("ServiceTest"))
{
System.Diagnostics.EventLog.CreateEventSource(
"ServiceTest", "Application");
}
ServiceEventLog.Source = "ServiceTest";
ServiceEventLog.Log = "Application";
// ----------------------------------------
}
protected override void OnContinue()
{
ServiceEventLog.WriteEntry("OnContinue Called.");
base.OnContinue();
}
protected override void OnPause()
{
ServiceEventLog.WriteEntry("OnPause Called.");
base.OnPause();
}
Reference
이 문제에 관하여(C#으로 Windows Service 만들기 (5)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yossihard/items/09133e2170c888fd78e0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)