elmah / Elmah

Error Logging Modules & Handlers for ASP.NET
https://elmah.github.io/
Apache License 2.0
310 stars 65 forks source link

Add search and filtering to the UI #20

Open atifaziz opened 9 years ago

atifaziz commented 9 years ago

Originally reported on Google Code with ID 20

Add the ability to create UI filters. 

For example, we might add a filter link that expands a filter box (dhtml)
in the UI. That would allow us to pick which Error Codes we're interested in.

Potential Filters:
  * Date range filters.
  * User Filters (starts-with, ends-with, contains)
  * Error Filter (starts-with, ends-with, contains)
  * Type Filter
  * Code Filter

Reported by haacked on 2007-07-24 23:55:26

atifaziz commented 9 years ago
Also we should improve the paging, so that you can jump to a specific page # of 
errors.  This can be easily done using Telerik RadGrid or Infragistics UltraWebGrid

which supports built in filtering on the columns, paging, etc.

Reported by abdullah.adam on 2007-08-01 13:20:32

atifaziz commented 9 years ago
I'm working on this. I was wondering whether filtering should be performed on the
client via DOM manipulation or on the server.

Reported by simone.busoli on 2007-08-23 22:38:49

atifaziz commented 9 years ago
Since you won't have all the log data on the client, the filtering (naturally) will

have to be done on the server. I think what Phil meant about DHTML in the original

issue comment was that the query UI could pop-in rather than taking up screen real-
estate unnecessarily when it's not needed.

Reported by azizatif on 2007-08-24 16:14:08

atifaziz commented 9 years ago
Yep, that's what I meant. Just an expandable box with advanced search and filtering
options! The filtering would happen on the server of course.

Reported by haacked on 2007-08-24 20:03:32

atifaziz commented 9 years ago
Looking at Simone's question again, I think it can be interpreted another way. I 
think he's asking whether the filtering is done on the server and then rendered from

the server or is it done via Ajax and then the result brought back into the current

view. If this second interpretation of the question is more correct then the first

and better approach here should be to filter and render on the server. The input 
from the search mask should result in an HTTP GET with a query string holding the 
criteria. The benefit of this approach is that the URL-based query can be 
bookmarked, exchange via e-mail and IM and the back button won't be broken. A more

Ajaxy version can always be considered later.

Reported by azizatif on 2007-08-25 09:19:04

atifaziz commented 9 years ago
Yes, I'm finally going the HTTP GET way. Filtering is working fine, now I'm trying to
integrate it with paging, since paging stuff are simple links and throw away
filtering parameters passed on querystring.

Reported by simone.busoli on 2007-08-27 23:07:24

atifaziz commented 9 years ago
Oh, I've gone too fast. Filtering is working fine with MemoryErrorLog, not other
ErrorLog subclasses. I think it does need to be supported at ErrorLog subclasses
level, and I've changed the signature of the GetErrors method to accept two more
parameters, a filter type and the arguments for the filter. This feature is trickier
than I thought, since this implies changing each ErrorLog inheritor logic. I hoped
it
could be implemented at presentation level, but that way the paging would get messed
up, because you end up filtering at higher level, that is, only on the records you
see in the current page, and you have no knowledge of following, previous pages. For
example, you may find yourself with an empty page 1 and full page 2, pretty weird.

Reported by simone.busoli on 2007-08-27 23:36:51

atifaziz commented 9 years ago
Here's what I've come up so far. Filtering is working on the MemoryErrorLog class,
and I've brought some functionality up to the base ErrorLog class, to extract filter
arguments info. Still paging is not integrated with filtering, my idea is to put
paging into the form I used for filtering so that all the parameters are kept at each
request on the query string. Actually, performing filtering on other ErrorLog
subtypes doesn't look so complicated, even if it entails changing the store procedure
for the SqlErrorLog class.

Reported by simone.busoli on 2007-08-28 00:51:55


atifaziz commented 9 years ago
I've added filtering for the XmlFileErrorLog as well and made paging work again.
Filtering for the SQL error log is still not there yet, anyone wanna put his hands
on
it? It shouldn't be so challenging, I just don't use to work with SQL server a lot.

Reported by simone.busoli on 2007-08-28 23:41:20


atifaziz commented 9 years ago
Can't wait to try it out. I really need it to work with SQL Server so I can try it
out at work. I don't have any time to implement SQL filtering yet, but if you get to
it first, that's great!

Reported by haacked on 2007-08-29 22:40:22

atifaziz commented 9 years ago
I'm on the SQLite provider right now, but I'll see if I can do it. I just need to
refresh some SQL ;)

Reported by simone.busoli on 2007-08-29 22:48:07

atifaziz commented 9 years ago
Here it is with the SqlErrorLog workin with filtering too. It needs some testing
however. I changed the store procedure to retrieve the errors, just that.

Reported by simone.busoli on 2007-08-30 00:26:55


atifaziz commented 9 years ago

Reported by azizatif on 2007-10-10 20:46:43

atifaziz commented 9 years ago
Sorry or my noob question, but how do I apply this patch?  I tried getting this tool

(http://gnuwin32.sourceforge.net/packages/patch.htm) but it seemed confused with the

file format

Reported by abdullah.adam on 2007-10-22 21:02:30

atifaziz commented 9 years ago
Abdullah,

you don't need such tools, a Subversion client like TortoiseSVN will do. It has a
specific option to apply patches to a working copy.

Reported by simone.busoli on 2007-10-22 21:07:10

atifaziz commented 9 years ago
Is there any chance this patch could be updated to be compatible with the current 
BETA2 version of ELMAH?  As suggested on 10/22/07, I tried using TortoiseSVN to 
apply the patch, but realized it was not in synch with the new source.  I also 
attempted to manually apply the patch, but ran into problems in a couple of files 
when trying to locate the code to be deleted/added.  

BTW, this is a terrific project - thanks for your efforts.

Reported by jrnh51@metrocast.net on 2008-06-11 13:35:58

atifaziz commented 9 years ago
@johnrosset: The best way to search and filter right now is to download the log in 
CSV format (this is already addressed as issue #26 and working) and then use Excel's

data filtering capabilities. You may also want to look into LogParser 
(http://www.microsoft.com/technet/scriptcenter/tools/logparser/default.mspx), which

provides SQL-like capabilities on the CSV data. The CSV log was implemented 
precisely so that you can leverage existing tools instead of waiting for ELMAH to 
provide everything out of the box as well as match the capability of existing tools.

Reported by azizatif on 2008-06-11 13:54:53

atifaziz commented 9 years ago

Reported by azizatif on 2008-11-13 17:57:48

atifaziz commented 9 years ago

Reported by azizatif on 2009-10-09 21:25:05

atifaziz commented 9 years ago

Reported by azizatif on 2010-10-18 23:01:45

atifaziz commented 9 years ago
Hi Atif Aziz,

Thank you for ELMAH!
Could we not use datatable.net or jQgrid instead of a GridView for search facility...
Also, Bilal Haider has something called XGrid(if my memory seres right)

Regards,
naveenj

Reported by naveen.chakiath on 2010-11-30 15:30:22

atifaziz commented 9 years ago
Will this be included in v1.2?  Thanks for all the hard work!

Reported by ddouglass on 2011-01-10 14:45:30

atifaziz commented 9 years ago
Hi all, 

Are there any plans for this patch and the searching functionality to be part of future
releases as standard? 

Thanks, 

-Rob

Reported by robmorrisby on 2011-11-08 15:55:45

atifaziz commented 9 years ago
Issue 307 has been merged into this issue.

Reported by azizatif on 2012-08-14 06:49:30

atifaziz commented 9 years ago
I think the ELMAH UI is great as it is. I like the idea that ELMAH provides the core
feature around logging and that you use the standard UI for simple things and something
else for the more advanced things. I've successfully imported all my errors in Excel,
which makes it possible to search, group etc. Also I've started the project named http://elmah.io,
which makes these things possible.

Did you consider removing the UI from the core and providing this feature as a separate
package? Giving people a good framework for building UI's on top of ELMAH, would probably
give birth to multiple UI's. Each focusing on different things.

Reported by thomasardal on 2013-08-18 18:36:55

amastaneh commented 8 years ago

+1