Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在.NET中以编程方式分析日志文件_.net_Parsing_Logging_Log4net_Text Processing - Fatal编程技术网

在.NET中以编程方式分析日志文件

在.NET中以编程方式分析日志文件,.net,parsing,logging,log4net,text-processing,.net,Parsing,Logging,Log4net,Text Processing,我们有大量(读取:50000)相对较小(读取低于500K,通常低于50K)的日志文件,这些文件是从我们的客户机应用程序使用log4net创建的。典型的日志如下所示: Start Painless log Framework:8.1.7.0 Application:8.1.7.0 2010-05-05 19:26:07,678 [Login ] INFO Application.App.OnShowLoginMessage(194) - Validating Credentials... 201

我们有大量(读取:50000)相对较小(读取低于500K,通常低于50K)的日志文件,这些文件是从我们的客户机应用程序使用log4net创建的。典型的日志如下所示:

Start Painless log
Framework:8.1.7.0
Application:8.1.7.0
2010-05-05 19:26:07,678 [Login ] INFO  Application.App.OnShowLoginMessage(194) - Validating Credentials...
2010-05-05 19:26:08,686 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Checking for Application Updates...
2010-05-05 19:26:08,830 [1     ] INFO  Framework.Globals.InstanceStartup(132) - Application Startup
2010-05-05 19:26:09,293 [1     ] INFO  Framework.PluginManager.LogPluginState(150) - Plugin <Purchase History Data>:True
2010-05-05 19:26:09,293 [1     ] INFO  Framework.PluginManager.LogPluginState(150) - Plugin <Shopping Assistant>:True
2010-05-05 19:26:09,294 [1     ] INFO  Framework.PluginManager.LogPluginState(150) - Plugin <Shopping List>:True
2010-05-05 19:26:09,294 [1     ] INFO  Framework.PluginManager.LogPluginState(150) - Plugin <Teeth>:True
2010-05-05 19:26:09,294 [1     ] INFO  Framework.PluginManager.LogPluginState(150) - Plugin <Scanner>:True
2010-05-05 19:26:09,294 [1     ] INFO  Framework.PluginManager.LogPluginState(150) - Plugin <Value Comparison>:True
2010-05-05 19:26:09,294 [1     ] INFO  Framework.PluginManager.LogPluginState(150) - Plugin <Lotus Notes CRM>:True
2010-05-05 19:26:09,295 [1     ] INFO  Framework.PluginManager.LogPluginState(150) - Plugin <Salesforce.com>:False
2010-05-05 19:26:09,295 [1     ] INFO  Framework.PluginManager.LogPluginState(150) - Plugin <Lotus Notes Mail>:True
2010-05-05 19:26:09,295 [1     ] INFO  Framework.PluginManager.LogPluginState(150) - Plugin <Sales Leads>:True
2010-05-05 19:26:09,295 [1     ] INFO  Framework.PluginManager.LogPluginState(150) - Plugin <Configurator>:True
2010-05-05 19:26:09,297 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Validating Database...
2010-05-05 19:26:10,342 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Validating Database...
2010-05-05 19:26:10,489 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Loading Global Handlers...
2010-05-05 19:26:10,495 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Starting Main Window...
2010-05-05 19:26:10,496 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Initializing Components...
2010-05-05 19:26:11,145 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Restoring Location...
2010-05-05 19:26:11,164 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Loading Plug Ins...
2010-05-05 19:26:11,169 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Loading Panels...Order Manager
2010-05-05 19:26:11,181 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Loading Orders...
2010-05-05 19:26:11,274 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Done Loading 1 Order
2010-05-05 19:26:11,314 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Loading Panels...All Products
2010-05-05 19:26:11,471 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Loading Tabbed Areas...Purchase History Data
2010-05-05 19:26:11,545 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Loading Tabbed Areas...Shopping List
2010-05-05 19:26:11,597 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Loading Tabbed Areas...Teeth
2010-05-05 19:26:11,768 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Loading Tabbed Areas...Scanner
2010-05-05 19:26:11,810 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Loading Tabbed Areas...Value Comparison
2010-05-05 19:26:11,840 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Loading Tabbed Areas...Sales Leads
2010-05-05 19:26:11,922 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Loading Tabbed Areas...(Done!)
2010-05-05 19:26:11,923 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Adding Handlers...
2010-05-05 19:26:11,925 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Loading Main Window Handlers...
2010-05-05 19:26:11,932 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Loading Main Menu...
2010-05-05 19:26:11,949 [1     ] INFO  Application.App.OnShowLoginMessage(194) - Initialization Complete.
2010-05-05 19:26:13,662 [1     ] INFO  Framework.ProductSearch.Search(342) - User entered term: <>
启动无痛日志
框架:8.1.7.0
应用:8.1.7.0
2010-05-05 19:26:07678[登录]信息应用程序.应用程序.OnShowLoginMessage(194)-验证凭据。。。
2010-05-05 19:26:08686[1]信息应用程序。应用程序。OnShowLoginMessage(194)-检查应用程序更新。。。
2010-05-05 19:26:08830[1]信息框架.全局.实例启动(132)-应用程序启动
2010-05-05 19:26:09293[1]信息框架.PluginManager.LogPluginState(150)-插件:True
2010-05-05 19:26:09293[1]信息框架.PluginManager.LogPluginState(150)-插件:True
2010-05-05 19:26:09294[1]信息框架.PluginManager.LogPluginState(150)-插件:True
2010-05-05 19:26:09294[1]信息框架.PluginManager.LogPluginState(150)-插件:True
2010-05-05 19:26:09294[1]信息框架.PluginManager.LogPluginState(150)-插件:True
2010-05-05 19:26:09294[1]信息框架.PluginManager.LogPluginState(150)-插件:True
2010-05-05 19:26:09294[1]信息框架.PluginManager.LogPluginState(150)-插件:True
2010-05-05 19:26:09295[1]信息框架.PluginManager.LogPluginState(150)-插件:False
2010-05-05 19:26:09295[1]信息框架.PluginManager.LogPluginState(150)-插件:True
2010-05-05 19:26:09295[1]信息框架.PluginManager.LogPluginState(150)-插件:True
2010-05-05 19:26:09295[1]信息框架.PluginManager.LogPluginState(150)-插件:True
2010-05-05 19:26:09297[1]INFO Application.App.OnShowLoginMessage(194)-正在验证数据库。。。
2010-05-05 19:26:10342[1]INFO Application.App.OnShowLoginMessage(194)-正在验证数据库。。。
2010-05-05 19:26:10489[1]INFO Application.App.OnShowLoginMessage(194)-加载全局处理程序。。。
2010-05-05 19:26:10495[1]信息应用程序.应用程序OnShowLoginMessage(194)-正在启动主窗口。。。
2010-05-05 19:26:10496[1]信息应用程序.应用程序OnShowLoginMessage(194)-初始化组件。。。
2010-05-05 19:26:11145[1]信息应用程序.应用程序OnShowLoginMessage(194)-正在恢复位置。。。
2010-05-05 19:26:11164[1]INFO Application.App.OnShowLoginMessage(194)-加载插件。。。
2010-05-05 19:26:11169[1]信息应用程序应用程序OnShowLoginMessage(194)-加载面板…订单管理器
2010-05-05 19:26:11181[1]信息应用程序.应用程序OnShowLoginMessage(194)-加载订单。。。
2010-05-05 19:26:11274[1]信息应用程序.应用程序OnShowLoginMessage(194)-完成加载1个订单
2010-05-05 19:26:11314[1]信息应用程序应用程序OnShowLoginMessage(194)-加载面板…所有产品
2010-05-05 19:26:11471[1]INFO Application.App.OnShowLoginMessage(194)-加载选项卡区域…购买历史数据
2010-05-05 19:26:11545[1]INFO Application.App.OnShowLoginMessage(194)-加载选项卡区域…购物列表
2010-05-05 19:26:11597[1]信息应用程序应用程序OnShowLoginMessage(194)-加载选项卡区域…牙齿
2010-05-05 19:26:11768[1]信息应用程序应用程序OnShowLoginMessage(194)-加载选项卡区域…扫描仪
2010-05-05 19:26:11810[1]信息应用程序.应用程序OnShowLoginMessage(194)-加载选项卡区域…值比较
2010-05-05 19:26:11840[1]信息应用程序.应用程序.OnShowLoginMessage(194)-加载选项卡区域…销售线索
2010-05-05 19:26:11922[1]信息应用程序.应用程序OnShowLoginMessage(194)-加载选项卡区域…(完成!)
2010-05-05 19:26:11923[1]INFO Application.App.OnShowLoginMessage(194)-添加处理程序。。。
2010-05-05 19:26:11925[1]INFO Application.App.OnShowLoginMessage(194)-加载主窗口处理程序。。。
2010-05-05 19:26:11932[1]信息应用程序应用程序OnShowLoginMessage(194)-加载主菜单。。。
2010-05-05 19:26:11949[1]INFO Application.App.OnShowLoginMessage(194)-初始化完成。
2010-05-05 19:26:13662[1]信息框架.产品搜索.搜索(342)-用户输入的术语:
我希望能够在服务器端解析这些日志(无论是在上传时还是夜间),以提取异常(总是在错误或致命时记录)或其他特定日志消息,如:

2010-05-05 20:05:24,951 [1     ] INFO  Framework.ProductSearch.Search(342) - User entered term: <kavo>
2010-05-05 20:05:24951[1]信息框架.产品搜索.搜索(342)-用户输入的术语:
为了得到“卡沃”这个词,我们可以找出人们真正在搜索什么

我尝试过手工解析文本(使用String.Split()和类似的方法),但感觉就像是在重新发明轮子


是否有一个很好的库来进行这种日志提取?

这看起来像是


通过这种方式,您可以搜索“用户输入的术语:”之类的模式。您可以在之后提取组匹配项

这看起来像是


通过这种方式,您可以搜索“用户输入的术语:”之类的模式。您可以在以后提取组匹配

log4net是否可以不读取它自己的格式模式?一旦它读回格式,您就不能只解析%message%部分吗


一个更好的问题可能是,为什么不在进行日志调用的同时将该搜索项写入数据库,或者通过log4net创建另一个日志文件,该文件只记录%message%,而您写入该日志的只是搜索项?如果可以避免的话,我真的认为您不想解析日志……至少在将来是这样。

log4net是否可以不读取自己的格式模式?一旦它读回格式,您就不能只解析%message%部分吗

一个更好的问题可能是,为什么不在进行日志调用的同时将该搜索项写入数据库,或者通过log4net创建另一个日志文件,该文件只记录%message%,而您写入该日志的只是搜索项?我真的