1

我正在尝试一个场景,我能够生成 JSON 日志并将它们存储在数据库中。

我必须使用 log4net 作为日志记录机制。到目前为止,我可以使用下面的 json 格式器来实现 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 日志插入到 no-sql 数据库中。
4

3 回答 3

1

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

于 2015-04-17T19:05:20.177 回答
0

我认为您没有将日志存储到实际的 json 文件中,您使用的是文本文件 jsonlog.txt。如果您想将 jsonlogs 存储到数据库中,您可以配置 log4net 来为您完成。看看这个。

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

于 2015-04-15T22:24:20.843 回答
0

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

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

  1. 文件
  2. 网络
    1. TCP
    2. UDP
    3. 系统日志

其他选项是队列,例如 RabbitMQ 或 AMQP。我没玩过那些。这取决于您在可用性和弹性方面的需求和资源。

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

于 2016-03-23T03:35:03.073 回答