2015-04-15 37 views
0

我正在嘗試一種方案,可以生成JSON日誌並將它們存儲在數據庫中。我不得不使用log4net作爲日誌機制。到目前爲止,我能夠使用json formater實現log4net Json,如下所示。Log4net將Json結果導入到NoSQL數據庫中

<appender name="FileAppender" type="log4net.Appender.RollingFileAppender"> 
    <param name="File" value="C:\\TestProj\\jsonlog.txt" /> 
    <param name="AppendToFile" value="true" /> 
    <param name="DatePattern" value="_yyyyMMddHH&quot;.log&quot;" /> 
    <param name="RollingStyle" value="Date" /> 
    <param name="StaticLogFileName" value="false" /> 
    <layout type="log4net.Layout.SerializedLayout, log4net.Ext.Json"> 
    </layout> 
</appender> 
<root> 
    <level value="ALL" /> 
    <appender-ref ref="FileAppender" /> 
</root> 

我也知道如何使用adonetappender log4net的日誌插入SQL。

但是我無法弄清楚這兩個問題:

  1. 如何json的日誌插入到SQL Server數據庫。
  2. 如何將json日誌插入​​非sql數據庫。
+0

爲1),只是適當地配置ADO.Net附加器,以及2)它取決於該數據庫使用,用於MongoDB的例子,你可以使用[tog4mongo-net](https://github.com/log4mongo/log4mongo-net) – stuartd

回答

0

我認爲你沒有將你的日誌存儲到實際的json文件中,而是使用jsonlog.txt這是一個文本文件。如果你想將jsonlogs存儲到數據庫中,你可以配置log4net來爲你做。看看這個。

https://logging.apache.org/log4net/release/config-examples.html

+0

嗨,我不知道如何做到這一點。對於json輸出,我必須使用json appender。然後,我將如何配置它的adonet部分來插入數據庫? –

+0

嗨,我想我明白了。我使用普通的ado.net appender,然後使用json佈局作爲其中一個參數。 –

1

我想我得到了它。我使用普通的ado.net appender,然後使用json佈局作爲其中一個參數。 -

0

插入no-sql是SerializedLayout發生的主要原因。這可以通過多種方式實現,但您很可能需要一些中間處理器來處理日誌。我可以推薦logstash和nxlog。 Logstash可以在彈性搜索中輕鬆存儲您的文件。

它們都可以從檢索日誌:

  1. 文件
  2. 網絡
    1. TCP
    2. UDP
    3. 日誌

其他選項可能是隊列,如RabbitMQ或AMQP。我沒有玩過這些。這取決於您的需求和可用性和彈性方面的資源。

至於格式化JSON一堆,一看便知在你的另一個問題 - https://stackoverflow.com/a/36169213/481812