Log4net Json结果进入NoSQL数据库

时间:2015-04-15 19:50:04

标签: log4net log4net-appender

我正在尝试一种方案,我可以生成JSON日志并将它们存储在数据库中。

我必须使用log4net作为日志记录机制。到目前为止,我能够使用json formater实现log4net Json,如下所示。

<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日志插入​​到无数据库中。

3 个答案:

答案 0 :(得分:1)

我想我明白了。我使用常规的ado.net appender,然后使用json布局作为其中一个参数。 -

答案 1 :(得分:0)

我认为您不是将日志存储到实际的json文件中,而是使用jsonlog.txt这是一个文本文件。如果要将jsonlog存储到数据库,可以配置log4net来为您执行此操作。看看这个。

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

答案 2 :(得分:0)

插入no-sql是SerializedLayout发生的主要原因。有多种方法可以实现,但您很可能需要一些中间处理器来存储日志。我可以推荐logstash和nxlog。 Logstash可以轻松地将文件存储在弹性搜索中。

他们都可以从以下位置检索日志:

  1. 文件
  2. 网络
    1. TCP
    2. UDP
    3. 日志
  3. 其他选项可能是队列,如RabbitMQ或AMQP。我没玩过那些。这取决于您在可用性和弹性方面的需求和资源。

    关于格式化JSON束,请参阅关于你的另一个问题的答案 - https://stackoverflow.com/a/36169213/481812