2015-04-15 25 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