2008-10-06 3 views
10

하루에 한 번 실행해야하는 C# .net을 사용하여 응용 프로그램을 개발해야합니다. 최대 1 분 동안 만 실행되므로 Windows 서비스를 개발하는 것은 잔인하며 예약 된 작업이 적절한 방법입니다.Windows 용 예약 작업 개발

  • 가 어떻게이 작업이 실패했습니다 작업 스케줄러에 표시 않습니다

    그러나, 나는 응용 프로그램이 결과를 통신 할 수있는 방법에 대한 몇 가지 질문이? 이것은 프로그램의 종료 코드를 통해 이루어 집니까?

  • 출력 정보를 어떻게 기록합니까? 콘솔 출력이 자동으로 캡처되거나 명시 적으로 이벤트 뷰어에 기록해야합니까?

답변

7

-이 값 뭔가 당신이 Sheduled 작업 뷰어에서 그것을 볼 수 체크되지 않은 예외가하는 '최종 결과'가있을 것입니다 던졌다 때문에

  1. 는 작업이 실패하는 경우 0xe0434f4d입니다. 또는 예약 된 작업 뷰어의 마지막 결과 열에도 표시되는 종료 코드를 반환하는 경우.

  2. 예 : 콘솔에 쓰기. Console.WriteLine("blah");은 어디에도 나타나지 않습니다. 이벤트 로그 또는 로그 파일에 기록해야합니다. 당신이 로그 방법 파일 가면

0

AFAIK 스케줄러가 프로세스를 시작합니다. 이벤트 로그 또는 다른 로깅 시스템을 사용하여 나중에 참조해야하는 정보를 기록 할 수 있습니다. 질문에 대한 대답에서

4

, 당신은 여전히 ​​Console.WriteLine("blah");를 사용할 수 있습니다. 트릭은 표준 아웃오류를 스트림을 리디렉션하는 것입니다

 StreamWriter mylog = new StreamWriter("mylog.log"); 
     Console.SetOut(mylog); 
     Console.SetError(mylog); 

또한 반드시 로그 파일이 최신 정보를 포함하기 위해 종종 버퍼를 플러시 할 필요가있다.

  Console.Out.Flush(); 

이 신속하고 더러운, 당신은 정말 Windows 이벤트 로그 또는 log4net을 사용해야합니다.

0

Log4net은 매우 우수한 전체 로깅 프레임 워크입니다. 나는 그것을 매우 추천 할 수있다.