- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 log4net 文件解析为 json。
这是我的示例 log4net:
2015-01-27 01:06:18,859 [7] ERROR Web.Cms.Content.Base.Taxonomy.TaxonomyDetectionProvider [(null)] - Get taxonomy Type Failed for Tools
2015-01-27 06:34:31,051 [26] ERROR www.Status404 [(null)] - ErrorId: 20150127_102b01c6-3208-48c5-8c8b-ae4f92cf2b20
UserAgent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36
HostAddress: 192.168.10.2
RequestUrl: /ErrorPages/404.aspx
MachineName: QA01
Raw Url:/undefined/
Referrer: http://qa1.www.something.com/toolset.aspx
2015-01-27 06:34:33,270 [26] DEBUG Web.Caching.Core.CacheManagerBase [(null)] - Custom CacheProvider:Web.Caching.Core.AppFabricCacheManager,Web.Caching.Core Disabled
有了这个,我使用 xm_multiline 来捕获每个日志条目。
<Extension multiline>
Module xm_multiline
HeaderLine /^\d{4}\-\d{2}\-\d{2} \d{2}\:\d{2}\:\d{2},\d{3}/
EndLine /\r?\n\r?\n^\d{4}\-\d{2}\-\d{2} \d{2}\:\d{2}\:\d{2},\d{3}/
</Extension>
我使用正则表达式捕获时间戳作为标题然后我使用正则表达式捕获两次换行然后下一个时间戳作为结尾。然而,它仍然将第二个和最后一个条目视为一个日志条目。
这是输出:
{
"EventReceivedTime":"2015-01-27 01:06:35",
"SourceModuleName":"log4net",
"SourceModuleType":"im_file",
"time":"2015-01-27 01:06:18,859",
"thread":"7",
"level":"ERROR",
"logger":"Web.Cms.Content.Base.Taxonomy.TaxonomyDetectionProvider",
"ndc":"(null)",
"message":"Get taxonomy Type Failed for Tools"
}{
"EventReceivedTime":"2015-01-27 06:34:35",
"SourceModuleName":"log4net",
"SourceModuleType":"im_file",
"time":"2015-01-27 06:34:31,051",
"thread":"26",
"level":"ERROR",
"logger":"www.Status404",
"ndc":"(null)",
"message":" ErrorId: 20150127_102b01c6-3208-48c5-8c8b-ae4f92cf2b20\r\n UserAgent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36\r\n HostAddress: 192.168.10.2\r\n RequestUrl: /ErrorPages/404.aspx\r\n MachineName: QA01\r\n Raw Url:/undefined/\r\n Referrer: http://qa1.www.something.com/toolset.aspx\r\n\r\n2015-01-27 06:34:33,270 [26] DEBUG Web.Caching.Core.CacheManagerBase [(null)] - Custom CacheProvider:Web.Caching.Core.AppFabricCacheManager,Web.Caching.Core Disabled"
}
我用它来产生那个输出:
Exec if $raw_event =~ /^(\d{4}\-\d{2}\-\d{2} \d{2}\:\d{2}\:\d{2},\d{3}) \[(\S+)\] (\S+) (\S+) \[(\S+)\] \- (.*)/s \
{ \
$time = $1; \
$thread = $2; \
$level = $3; \
$logger = $4; \
$ndc = $5; \
$message = $6; \
to_json(); \
} \
else \
{ \
drop(); \
}
我还尝试通过使用它来调整它以避免将最后两个条目合并为一个。但是我无法再获得最后一个条目。
Exec if $raw_event =~ /^(\d{4}\-\d{2}\-\d{2} \d{2}\:\d{2}\:\d{2},\d{3}) \[(\S+)\] (\S+) (\S+) \[(\S+)\] \- ([\s\S]*?)(\r?\n\r?\n|$)/ \
{ \
$time = $1; \
$thread = $2; \
$level = $3; \
$logger = $4; \
$ndc = $5; \
$message = $6; \
to_json(); \
} \
else \
{ \
drop(); \
}
最佳答案
我不会费心尝试将您的日志解析为 JSON。相反,您应该直接生成 JSON。您可以直接使用一些附加程序来执行此操作,例如 log4net.ext.json :
Extend log4net facility with simple configuration options to create JSON log entries. This is especially handy to pass semantic information to other utilities, such as nxlog, LogStash, GrayLogs2 and similar.
(强调我的)
如果您需要人类可读版本的日志,您可以创建两个记录器,每个记录器输出一种格式,但我猜您无论如何都会使用 nxlog。
在我看来,正则表达式不是将自由格式日志推回结构化日志的好方法,因此您最好直接构建它。
关于regex - Q : log4net file parse with Regex + NXLog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28206172/
我可以使用 nxlog(om_dbi) 将数据插入 PostgreSQL。 但我无法使用 nxlog 从 PostgreSQL 选择数据(或获取数据)。我尝试了很多选项都没有用。 而在 nxlog 文
我在 Windows Server 2012 R2 上使用 nxlog-ce。 nxlog 正在输出两个 txt 文件。 我想每小时轮换这两个文件。我希望事件日志保持相同的名称,logfileA.tx
我有一堆 linux 服务器配置为使用 fluent-secure-output 插件将日志推送到另一个 fluentd 服务器。现在我想使用 nxlogs 配置我们的 Windows 服务器。 我阅
如何使用客户端 $Hostname 在 nxlog 服务器中自动生成目录?nxlog 客户端是 Windows m/c 日志在 nxlog 服务器上获取,但我想创建客户端 $Hostname DIR因
我们有一个设置,其中程序以遵循 GELF 规范的格式记录到 .Json 文件。 目前这是使用 HTTP 发送到 Graylog2 服务器。这行得通,但由于 HTTP 的性质,存在明显的延迟,如果有大量
我正在尝试将 log4net 文件解析为 json。 这是我的示例 log4net: 2015-01-27 01:06:18,859 [7] ERROR Web.Cms.Content.Base.Ta
我已经从 DigiCert 购买了证书。所以我得到了文件; DigiCertCA.crt, mydomain_com.crt mydomain_com.key 我将我的 logstash 配置更改为此
我正在尝试使用 NXLog 发布到 https 中的服务。不幸的是,每次尝试发帖时我都会收到此错误: 2018-12-19 09:11:14 ERROR SSL 证书验证失败:无法获取本地颁发者证书(
我让 NXLog 将我的 Windows 事件传送到另一台仅在 TCP 中运行良好的 Logstash 机器。但我想使用自签名证书加密流量。我认为我对 SSL 有基本的了解,但对 NXLog 文档感到
我正在尝试使用 nxLog 解析器 to_json() 将自定义日志文件解析为 JSON,以便我可以将它们发送到我的 ElasticSearch 实例中。我将把它们分成三个单独的字段,日期、日志类型指
我读了a blog post关于设置 Logstash、Elasticsearch 和 Kibana,作者建议使用 NXLog 来传送来自不同机器的日志。 “The Logstash Book”中呈现
这与密切相关 > Using nxlog to ship logs in to logstash from Windows using om_ssl > Using SSL to ship from
我一直在寻找从 Windows 发送日志的选项,我已经设置了 logstash,目前我使用 logstash-forwarder 和 ssl 加密将日志从 Linux (CentOS) 服务器发送到我
我是一名优秀的程序员,十分优秀!