이제 윈도우즈 서비스에서 프로세스를 이용하여 작업을 수행 할 수 있습니다.
이전 글에서도 이야기 한 것처럼 로그를 남기는 것은 중요한 부분입니다.
로그를 남겨야만 프로그램이 오작동 했을 때 원인을 유추해 볼 수 있습니다.
그래서 윈도우즈 서비스와 프로세스 둘 다 로그를 남기기로 하고 설정을 했습니다.
Cofiguration 예제
윈도우즈 서비스에서는 설정한 대로 로그가 생성되었지만
프로세스 쪽은 로그가 윈도우즈 서비스에서 설정한 경로에 생성되었습니다.
프로세스 쪽의 설정이 잘못되었나 하고 웹을 뒤져가며 1~2시간을 씨름했습니다.
프로세스의 설정에는 아무런 문제가 없었습니다.
문제는 윈도우즈 서비스의 Configuration 파일과 프로세스의 Configuration 파일 이름이 같아서 일어난 문제였습니다.
프로세스 쪽의 Configuration 이름을 LogProcess.config로 바꾸니 제대로 로그가 생성되었습니다.
저의 경우에는 윈도우즈 서비스 쪽의 Log.config가 실행 경로에 남게되어 프로세스 쪽은 설정한 대로 로그가 생성되지 않았습니다.
동일한 이름의 log4net Configuration 파일을 생성했을 때 아래와 같이 이상한 파일 이름으로 로그가 생성되었습니다.
이전 글에서도 이야기 한 것처럼 로그를 남기는 것은 중요한 부분입니다.
로그를 남겨야만 프로그램이 오작동 했을 때 원인을 유추해 볼 수 있습니다.
그래서 윈도우즈 서비스와 프로세스 둘 다 로그를 남기기로 하고 설정을 했습니다.
Cofiguration 예제
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="${programdata}\FinalService\Process\Log\"/>
<appendtofile value="true"/>
<datepattern value="yyyy-MM-dd'.log'"/>
<staticlogfilename value="false"/>
<rollingstyle value="Composite"/>
<layout type="log4net.Layout.PatternLayout">
<conversionpattern value="%d [%t] %-5p - %m%n"/>
</layout>
</appender>
<root>
<level value="All" />
<appender-ref ref="RollingFileAppender" />
</root>
</log4net>
</configuration>
설정을 마치고 프로그램을 실행했는데,윈도우즈 서비스에서는 설정한 대로 로그가 생성되었지만
프로세스 쪽은 로그가 윈도우즈 서비스에서 설정한 경로에 생성되었습니다.
프로세스 쪽의 설정이 잘못되었나 하고 웹을 뒤져가며 1~2시간을 씨름했습니다.
왜 안되지?하고 머리를 싸매고 있다가, 문득 떠오르는 생각이 있었습니다.
프로세스의 설정에는 아무런 문제가 없었습니다.
문제는 윈도우즈 서비스의 Configuration 파일과 프로세스의 Configuration 파일 이름이 같아서 일어난 문제였습니다.
프로세스 쪽의 Configuration 이름을 LogProcess.config로 바꾸니 제대로 로그가 생성되었습니다.
(빌드 후 실행 경로에는 Log.config 파일 하나만 남음) |
동일한 이름의 log4net Configuration 파일을 생성했을 때 아래와 같이 이상한 파일 이름으로 로그가 생성되었습니다.
댓글
댓글 쓰기