2009-12-22 3 views
0

내 질문은 this one과 비슷하지만 다소 간단한 문맥을 사용합니다. 제 경우에는 여러 명령 행 매개 변수를 동시에 두 번 (최대) 실행할 수있는 단일 응용 프로그램이 있으므로 각 인스턴스는 해당 컨텍스트를 알고 있습니다.log4net을 사용하여 동일한 응용 프로그램의 다른 인스턴스를 다른 파일에 기록하는 방법은 무엇입니까?

app.config 파일은 로깅을 구성하기위한 log4net 섹션을 정의합니다. 물론, 우리는 인스턴스의 런타임에 하나 (선택이 잘 정의하고 모호 됨)을로드 있도록 두 개의 응용 프로그램 인스턴스가 동일한 로그 파일에 기록 할 수 있다는 문제가있다,

<log4net xsi:noNamespaceSchemaLocation="http://csharptest.net/downloads/schema/log4net.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <appender name="MainAppender" type="log4net.Appender.FileAppender"> 
    <file value="${TMP}\NCAgent.log" /> 
    <appendToFile value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 
    </layout> 
    </appender> 
    <appender name="DebugAppender" type="log4net.Appender.ConsoleAppender"> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 
    </layout> 
    </appender> 
    <root> 
    <level value="ERROR" /> 
    <appender-ref ref="MainAppender" /> 
    <level value="INFO"/> 
    <appender-ref ref="DebugAppender"/> 
    </root> 
</log4net> 

그리고 : 여기있다 log4net XmlElement, 거기에 로그 파일의 이름을 변경하고 XmlConfigurator.Configure(XmlElement) 과부하를 사용하여 log4net을 구성합니다.

나는 우리의 접근 방식을 좋아하지 않으며 더 나은 해결책이 있어야한다고 생각합니다. 어떤 아이디어?

감사합니다.

답변

0

프로그래밍 방식으로 FileAppender 파일 이름을 구성하고 프로세스 ID를 추가하거나 FileAppender를 서브 클래 싱하여 구성 기반 방식으로 자동으로 작동을 제어 할 수 있습니다.

0

this answer to a similar question.을 참조하십시오.

시간 소인 또는 프로세스 ID와 같은 고유 한 이름을 포함하여 파일 이름에 대한 패턴을 정의 할 수 있습니다.

관련 문제