2015-12-22 83 views
0

我有要更新的記錄(該項目已經存在的記錄,但我不相信這是有史以來的工作)的天青工作者的作用。它設置爲使用Common.Logging,但使用Log4Net。我在Log4Net中設置了兩個appender - 一個用於ElasticSearch,一個用於滾動文件 - 兩者都不記錄任何輸出。log4net的+ Common.Logging +天青=空日誌文件

在輔助角色的app.config中,我已經配置log4net的,其次是Common.Logging:

... 
<log4net> 
<appender name="ElasticSearchAppender" type="log4net.ElasticSearch.ElasticSearchAppender, log4stash"> 
    <Server>localhost</Server> 
    <Port>9200</Port> 
    <IndexName>log_test_%{+yyyy-MM-dd}</IndexName> 
    <IndexType>LogEvent</IndexType> 
    <Bulksize>2000</Bulksize> 
    <BulkIdleTimeout>10000</BulkIdleTimeout> 
    <IndexAsync>False</IndexAsync> 
    <ElasticFilters> 
    <Add> 
     <Key>My Data Origin</Key> 
     <Value>Worker Role</Value> 
    </Add> 
    </ElasticFilters> 
</appender> 
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
    <file value="C:\tmp\log4net_rollingfile.log" /> 
    <appendToFile value="true" /> 
    <maximumFileSize value="100KB" /> 
    <maxSizeRollBackups value="2" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%level %thread %logger - %message%newline" /> 
    </layout> 
</appender> 
<root> 
    <level value="ALL" /> 
    <appender-ref ref="ElasticSearchAppender" /> 
    <appender-ref ref="RollingFile" /> 
</root> 
</log4net> 

<common> 
<logging> 
    <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net"> 
    <arg key="configType" value="INLINE" /> 
    </factoryAdapter> 
</logging> 
</common> 

我往往會覺得這事是關閉的配置。但是,RollingFile appender確實創建了c:\ tmp \ log4net_rollingfile.log,所以我不知道爲什麼沒有實際寫入文件。另外,沒有數據發送到ElasticSearch。

說完轉身與「log4net.Internal.Debug」 log4net的診斷,我可以看到的是,附加目的地越來越加載:

log4net: Adding appender named [ElasticSearchAppender] to logger [root]. 
log4net: Adding appender named [RollingFile] to logger [root]. 

回答

0

嘗試將日誌寫入到Web /輔助角色目錄樹。

1

有兩件事情我落得這樣做來解決這個問題。第一個可能沒有必要,但爲了以防萬一,我在這裏包括它。第二 - 好吧,這只是現代發展的一個案例,不幸的是很有幫助。值得慶幸的是,Common.Logging的源代碼是公開可用的,這在追蹤調試器中的問題時非常重要。

首先(也可能不必要手頭的分辨率),在通用的日誌設置你的log4net factoryAdapter的現代方法是使用特定庫到您當前的log4net的版本。有沒有一個對我使用(log4net的1.2.15)的版本,但使用Log4NetLoggerFactoryAdapter從Common.Logging.Log4Net1213工作:

<common> 
<logging> 
    <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net1213, Version=3.3.1.0, Culture=neutral"> 
    <arg key="configType" value="INLINE" /> 
    </factoryAdapter> 
</logging> 
</common> 

其次,問題的真正細節問題,爲應用程序。配置。不是我在上面的原始問題中複製的app.config,而是特別是app.Debug.config。我的大腦完全忽略了app.config左邊的小三角,它暗示了app.config涉及的多個資源。在app.Debug.config中,我的factoryAdapter被Common.Logging.Simple.TraceLoggerFactoryAdapter完全覆蓋。因此,無論我放在主要的app.config中,我都不會將日誌寫入預期位置。不知道爲什麼爲RollingFile appender創建空文件,但這是另一天的另一個問題。