使用 Elasticsearch & Enterprise Library 进行日志记录





4.00/5 (1投票)
在本教程中,我们将看到使用 Microsoft Enterprise Logging 进行 JSON 格式日志记录的示例,将日志发送到 Elasticsearch,并使用 Kibana 查看我们的日志。
引言
Elasticsearch 是当今最好的开源搜索引擎之一,具有出色的 NoSQL 文档数据库功能,可以成为应用程序日志记录的绝佳工具。
今天我们将学习如何将日志写入滚动文件,使用 Filebeat 将日志发送到 Elasticsearch,并使用 Kibana 以美观的方式查看我们的日志。
必备组件
- 使用 Microsoft Enterprise Library 进行日志记录(我们将在此示例中使用它,但也可以使用其他库,例如 NLOG)
- Elasticsearch 集群已安装并准备就绪
- Filebeat + Kibana 已安装(可选:Elasticsearch 'head' Chrome 扩展程序)
议程
- 在 entlib.config 中添加新的监听器
- 创建自定义格式化程序以写入 JSON 日志
- 配置 Filebeat 将日志发送到 Elasticsearch
- 在 Kibana 中查看日志
1. 在 entlib.config 中添加新的监听器
创建类型为 RollingFlatFileTraceListener
的新监听器。
将其命名为 Json TraceListener
。
使用新的格式化程序 Json Text Formatter。
确保标题和页脚为空。
示例
<add fileName="D:\Logs\JsonLogs\rolling.log" footer=""
formatter="Json Text Formatter" header=""
rollFileExistsBehavior="Increment" rollInterval="Day" rollSizeKB="50000"
timeStampPattern="yyyy-MM-dd"
listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.
RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging,
Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
traceOutputOptions="None" filter="All"
type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener,
Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"
name="Json TraceListener" />
2. 创建自定义格式化程序以写入 JSON 日志
Filebeat 默认以 JSON 格式发送日志,根据换行符 (\n
) 分隔每个写入的日志。
在这种情况下,我们希望将每个日志写入不同的日志,并在写入每一行时删除所有空格字符。
我们将通过创建新的格式化程序来实现它,该格式化程序将包含用于清理空格的新方法
<add template="{"Timestamp":"{timestamp(MM/dd/yyyy HH:mm:ss.fff)}",
"Message":"{formatForJsonValue(message)}",
"Category":"{category}", "Machine":"{machine}",
"Process Id":"{processId}" {dictionary(, "{key}": "{value}")} }"
type="Infrastructure.Logger.Formatters.CustomTextFormatter, Infrastructure.Logger"
name="Json Text Formatter" />
CustomTextFormatter
继承自 Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter
并实现 formatForJsonValue
方法
有关自定义格式化程序的更多说明,请查看 此链接。
3. 配置 Filebeat 将日志发送到 Elasticsearch
在 filebeat.yml 中,添加路径和输出如下
filebeat.prospectors:
- paths:
- E:\temp\logs\*.log
input_type: log
json.keys_under_root: true
json.add_error_key: true
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["localhost:9200"]
index: "bingo-logs-%{[beat.version]}-%{+yyyy.MM.dd}"
运行 Filebeat 后,我们将能够看到发送到 Elasticsearch 的日志
4. 在 Kibana 中查看日志
转到 Kibana → 管理 → 索引模式 → 创建索引模式
并添加与您的 filebeat.yml 配置中相同的索引模式。
转到 发现 → 选择您的新索引。
创建您自己的自定义视图(保存您的视图以供将来使用)
历史
- 2019 年 2 月 25 日:初始版本