我正在尝试一种方案,我可以生成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".log"" />
<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。
但是我无法弄清楚这两个问题:
答案 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可以轻松地将文件存储在弹性搜索中。
他们都可以从以下位置检索日志:
其他选项可能是队列,如RabbitMQ或AMQP。我没玩过那些。这取决于您在可用性和弹性方面的需求和资源。
关于格式化JSON束,请参阅关于你的另一个问题的答案 - https://stackoverflow.com/a/36169213/481812