제목을 너무 길게 만들고 싶지는 않지만이 질문은 특히 NServiceBus 일반 호스트를 로컬 시스템으로 실행하도록 구성된 Windows 서비스 (TopShelf 덕분)로 실행하는 것을 말합니다. (Vista 컴퓨터에서)NServiceBus 일반 호스트에 대한 로깅을 활성화하려면 어떻게합니까
a previous question에서 나는 왜 PubSub 샘플을 Windows 서비스로 실행하기로 결정했는지 설명하여 NServiceBus가 현재하고있는 일을 완전히 증명할 수있는 서비스를 쉽게 중지하고 시작할 수 있습니다. 하기로되어있다.
어떤 이유로 Log4Net에 디스크에 아무것도 기록 할 수 없으므로 Log4Net (초보자) 구성 문제 일 수 있습니까?
아래는가는 추적의 어떤 종류를 얻을 내 무차별 시도 - 다음과 같이 내가 지금까지지고있어 모두 writen 파일입니다 :
C : \ 로그 \ < -GUID-> log4net. 로그인을 시도하는 동안 다른 두 펜더 예외를 던지고있다 것처럼 보인다
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" />
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, NServiceBus.Core"/>
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<!-- in order to configure remote endpoints use the format: "[email protected]"
input queue must be on the same machine as the process feeding off of it.
error queue can (and often should) be on a different machine.
-->
<MsmqTransportConfig
InputQueue="worker2"
ErrorQueue="error"
NumberOfWorkerThreads="1"
MaxRetries="5"
/>
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="Messages" Endpoint="messagebus" />
</MessageEndpointMappings>
</UnicastBusConfig>
<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, NServiceBus.Core">
<arg key="configType" value="INLINE"/>
</factoryAdapter>
</logging>
</common>
<log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="c:\logs\Subscriber2.log" />
<param name="AppendToFile" value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="2" />
<maximumFileSize value="100KB" />
<staticLogFileName value="true" />
<datePattern value="yyyyMMdd" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionpattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="EventLogAppender" type="log4net.appender.eventlogappender">
<applicationname value="Subscriber2.EndPointConfig_v1.0.0.0" />
<layout type="log4net.layout.patternlayout">
<conversionpattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="TraceAppender" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
<appender-ref ref="EventLogAppender" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="TraceAppender" />
</root>
</log4net>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="c:\logs\log4net.log" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
서비스가 실행되는 사용자 계정에 c : \ logs에 쓸 수있는 적절한 사용 권한이 있습니까? –
Windows 서비스가 '로컬 시스템'으로 실행 중입니다. 다른 질문에 설명 된대로 나는 자신의 사용자 계정으로 실행되도록 설치하는 방법을 찾지 못했습니다. – rohancragg
업데이트 : 올바른 해결책은 마커 인터페이스 IWantCustomLogging을 EndpointConfig 클래스에 추가해야한다는 것입니다. 지금 나는 너무 많은 로깅을 얻고있다. 하지만 최대 로깅 및 추적을 얻는 방법의 예제로 위의 구성을 남겨 둘 것입니다 ... – rohancragg