Follow @RoyOsherove on Twitter

Case Study: SmartInspect in the real world

as part of the last case study, I’ve also implemented another tool in our real world projectSmartInspect: a tracing tool. The developer had also given us this tool free of charge to do a case study with, which I had promised to publish on my blog (good or bad!). As a startup company we’re trying to conserve cash, so this is a great tradeoff – we need good tools, and we can pay with publicity if they are great! (hear that, JetBrains?)

Amazing tidbit: I reviewed SmartInspect last time during 2006, and it’s come a long way since then.

  • EASY: it was relatively easy to get going with SmartInspect. The object model is quite nice, and I really liked the fact they have a special api for various common types (LogImage, LogException etc..). each type gets logs with its unique properties, and is visible in the very nicely done UI trace.:

SmartInspect Console

The UI allows creating custom filters in your own tabs and panes, and is pretty powerful, but I’ve foudn its usability factor to be less than adequate. It needs more usability work, and I haven’t had time to contact their support to let them know (sorry about making you find out this way!). It also has some bugs (some “errors” are not shown even if you filter to see all error types..) but overall it has been very good.

The way we used it, is by using PostSharp aspects that weave custom tracing using SmartInspect in the the begin and end of each method. Otherwise you’d need to do it yourself. and I hate wasting my time that way. SmartInspect and PostSharp go together as nicely as burger and fris. Don’t leave home without them.

  • Nice feature set. It does. It did everything I needed it to do, including support for “rolling” log files, that get recycled after a specific size, allowing encryption, and more. my favorite part of runtime view of logs as they happen inside the UI console. no need to look at the files after something happens. you can see it scroll by in real time.  it even supports logging from multiple thread and processes, and then seeing the log stack for each thread and process separately. I have not needed that feature yet, but future plans will force me to use it.


I have not regretted choosing this tool, and plan to continue using it it other projects as well.

Two different ways to create bad logic in unit tests

Case Study: CryptoLicensing + CryptoObfuscator in the real world