2014-02-18 3 views
1

메시지 유형에 대한 처리기에서 예외가 발생하면 예외가 UTCDate와 함께 기록되지만 컴퓨터 날짜 여야합니다.rebus log4net의 날짜가 잘못되었습니다.

이상한 점은 파일을 올바르게 기록한 다음 잘못 로그인하여 여러 개의 로그 메시지가 파일에 추가된다는 것입니다. 이것은 필요하지 않습니다!

아래 로그의 정확한 시간은 2014-02-18 14 : ...이고 잘못된 시간은 18-02-2014 13 : .... 잘못된 시간으로 로그가 필요하지 않습니다. 로그인 :

2014-02-18 14:08:43,616 WARN Rebus 1 worker 1 Rebus.Bus.RebusBus - User exception in Rebus 1 worker 1: System.IO.IOException: Error writing to file ---> System.UnauthorizedAccessException: Access to the path 'X' is denied. 
    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) 
    at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy) 
    at System.IO.FileStream..ctor(String path, FileMode mode) 
    at X.Y(X X, X X, X X) in X:line 538 
    --- End of inner exception stack trace --- 
    at X.Y(X X, X X, X X) in X:line 546 
    at Rebus.Bus.Dispatcher.DispatchToHandler[TMessage](TMessage message, IHandleMessages`1 handler) 

18-02-2014 13:08:43: 
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.IOException: Error writing to file ---> System.UnauthorizedAccessException: Access to the path 'X' is denied. 
    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) 
    at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy) 
    at System.IO.FileStream..ctor(String path, FileMode mode) 
    at X.Y(X X, X X, X X) in X:line 538 
    --- End of inner exception stack trace --- 
    at X.Y(X X, X X, X X) in X:line 546 
    at Rebus.Bus.Dispatcher.DispatchToHandler[TMessage](TMessage message, IHandleMessages`1 handler) 
    --- End of inner exception stack trace --- 
    at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 
    at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 
    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 
    at Rebus.Bus.Dispatcher.Dispatch[TMessage](TMessage message) 
    --- End of inner exception stack trace --- 
    at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 
    at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 
    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 
    at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) 
    at Rebus.Bus.Worker.DoTry() 
    at Rebus.Bus.Worker.TryProcessIncomingMessage() 
    at Rebus.Bus.Worker.MainLoop() 

Log4NetConfiguration :

<log4net> 
    <logger name="NHibernate"> 
     <level value="ERROR" /> 
    </logger> 
    <logger name="NHibernate.SQL"> 
     <level value="ERROR" /> 
    </logger> 
    <!-- The DebugFileAppender writes all messages to a log file--> 
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
     <file value="X" /> 
     <appendToFile value="true" /> 
     <maximumFileSize value="10000KB" /> 
     <maxSizeRollBackups value="10" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date %level %thread %logger - %message%newline" /> 
     </layout> 
    </appender> 
    <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> 
     <mapping> 
     <level value="ERROR" /> 
     <forecolor value="Red" /> 
     </mapping> 
     <mapping> 
     <level value="DEBUG" /> 
     <forecolor value="Yellow" /> 
     </mapping> 
     <mapping> 
     <level value="INFO" /> 
     <forecolor value="White" /> 
     </mapping> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionpattern value="%date [%thread] %logger %-5level - %message%newline" /> 
     </layout> 
    </appender> 
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender"> 
     <!--<param name="LogName" value="X" />--> 
     <param name="ApplicationName" value="X" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date %newline %type %newline %method %newline %message %newline %exception" /> 
     </layout> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
     <levelMin value="WARN" /> 
     <levelMax value="FATAL" /> 
     </filter> 
    </appender> 
    <root> 
     <!-- add other appenders here and the log messages will be sent to every listed appender --> 
     <appender-ref ref="EventLogAppender" /> 
     <appender-ref ref="RollingFile" /> 
     <appender-ref ref="ColoredConsoleAppender" /> 
    </root> 
    </log4net> 

수수께끼 로깅 설정 :

var rebusConfigurer = Configure.With(new WindsorContainerAdapter(container)) 
    .Logging(l => l.Log4Net()).Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig()) 
    .MessageOwnership(o => o.FromRebusConfigurationSection()) 
    .X(s => s.StoreInSqlServer(() => (SqlConnection)container.Resolve<ISession>().Connection, "X", "X")) 
    .SpecifyOrderOfHandlers(s => s.Use(new MyMessageHandlerInspector())); 

Rebus에서 예외가 발생했습니다.

throw new IOException("Error writing to file", exception); 

rebus가이를 기록하는 것을 어떻게 막거나 구성합니까? 로그에서 볼 수 있듯이 rebus 로깅 중 일부는 정상이며 다른 하나는 그렇지 않습니다.

답변

2

Rebus는 재 시도 사이의 시간 소인을 포함하여 캐치 예외를 추적합니다. 이는 Timed<Exception> 인스턴스 목록을 유지하여 dnoe이며 DateTime.UtcNow으로 각 인스턴스를 초기화하는 데 사용됩니다.

DateTime.Now 사용하지만 난 그게 이해가되지 않습니다 당신과 동의 때문에, 수수께끼 0.57.0에 변경했습니다 - 또는 적어도 그것을 Log4Net의 타임 스탬프 :

+0

당신을 매우 감사와 함께 꽤 이상한 보인다 많이 :) –

관련 문제