You can now follow us on Twitter.

Archive for the 'SmartInspect' Category

SmartInspect 3.0 Configuration File Monitoring

Friday, July 25th, 2008 by Dennis Gurock

Just like other logging tools, SmartInspect allows you to configure logging options via configuration files. But just how useful are configuration files on a production system really, when changes are only picked up when the application is restarted?

configuration-timer

To make configuration files more useful in production environments, we added a new feature to SmartInspect 3.0 that allows you to periodically reload changes in your configuration file. Here is how it works: you create an instance of a new SmartInspect monitoring class and use it to watch for changes in a configuration file in a given time interval. Once this class detects that the monitored configuration file has been changed, it will automatically reload the file and apply the new configuration to the SmartInspect logging classes.

This is really great for systems where you want to enable or disable logging on the fly without restarting them (think about web applications and similar server systems). With the new configuration file monitoring class, this has become a lot easier. You just need to change the configuration file and SmartInspect will automatically reconfigure itself.

Also, remember the session configuration support in yesterday’s posting? By combining this with the configuration file monitoring, SmartInspect 3.0 will also allow you to dynamically configure and update your sessions. One interesting use case of this feature is to temporarily enable logging for a specific application module or user session that you want to diagnose.

Next in our series on new SmartInspect 3.0 features is the new protocol support for asynchronously logging.

SmartInspect 3.0 Session Improvements

Wednesday, July 23rd, 2008 by Dennis Gurock

sessionsThis is the first part of a series showing some of the major new features and improvements of the upcoming SmartInspect 3.0 release. Yep, that’s right; SmartInspect 3.0 is coming very soon now! As with the previous major release, it will contain quite a few new features that are directly based on customer feedback. We are really grateful for all the feature requests, bug reports and ideas for improvements that we received over the years. Without them, SmartInspect wouldn’t be near as good or complete as it is today.

The first improvement I would like to write about is actually not a new feature. It’s more like a set of several enhancements to the existing SmartInspect session concept. Back then in 2003 and 2004 when we first planned which features SmartInspect 1.0 should shave, we quickly agreed that we should provide users with a way to group and categorize related log messages. We have chosen the session concept because it’s a) easy to understand and b) maps very well to existing related concepts such as user sessions in web applications.

In retrospect we are happy that we went with sessions for two reasons. First, sessions turned out to be one the key features of SmartInspect. Although sessions are a somewhat advanced feature that new users often ignore (which they easily can, because they don’t have to care about it when they are learning SmartInspect). But once they are getting used to it and are using SmartInspect in more complex applications, they quickly see the advantages of sessions over other logging concepts.

The second point is a bit more technical. Since the entire library design relies on sessions, it would have been difficult to integrate sessions at a later point without breaking existing customer code. And because you should be very careful to not break existing customer code with a new version of a dev tool, we are glad that we got the basic library design mostly right in the first attempt.

Although we got most of the design right, there were a few missing features. The first new feature in SmartInspect 3.0 regarding sessions is the new log level support. This is probably the most often requested session related feature that we incorporated into the new version. Log level support for sessions means that you are now able to configure log levels on a per-session basis. This allows you, for example, to only log errors and warnings in your application, except for your database module where you want SmartInspect to generate a very detailed log (e.g., for debugging or auditing purposes).

session-config

Another improvement in SmartInspect 3.0 is the new ability to configure sessions via SmartInspect configuration files. This allows you to enable, disable or configure specific sessions without recompiling your application. This can come in very handy if you have to dynamically enable or disable logging for certain application modules on production systems or at customer sites.

The last new session enhancement is the support for so-called session defaults. Session defaults let you specify default values for session attributes like the Active status or the background color of log entries in the Console. This is very useful in situations where you are working with many sessions and need a way to change the base settings of all instances.

We will introduce other new features and improvements of SmartInspect 3.0 in the next few days here on our blog.

Porting SmartInspect to Tiburon

Monday, July 21st, 2008 by Dennis Gurock

If you are into Delphi, you have probably already seen all the blog postings about Tiburon (the next Delphi version) from the CodeGear Embarcadero staff on DelphiFeeds.com. Besides working on SmartInspect 3.0 (more about this in a few days), we have also worked on porting SmartInspect to Tiburon in the recent weeks.

As you might already know, SmartInspect already fully supports Unicode and porting SmartInspect to Tiburon was quite easy and took only a few days of work overall. The SmartInspect Delphi library is now using UnicodeString as the main string type instead of WideString. Porting the library to UnicodeString had a positive impact on the performance of our logging library as the new UnicodeString is reference counted (and WideString is not). The performance gain is about 10-15%, but we do not have final numbers yet.

We are happy to see that Delphi will finally be 100% Unicodified soon, too, as this makes it really easy to build applications for an international audience. We fully expect to be releasing support for Tiburon and UnicodeString with SmartInspect just a few days after the new Delphi version goes gold.

New SmartInspect EAP Versions (and the SmartInspect Router)

Saturday, June 14th, 2008 by Tobias Gurock

We’ve released two new EAP versions in the last few days. On Thursday, we released the 3.0.2 EAP which fixes a few problems in the Console/Configuration Builder (most of the Console bugs were related to the shutdown behavior and pipe server). And a few minutes ago, I uploaded the new 3.0.3 version which introduces a new SmartInspect service application called the SmartInspect Router. From the docs:

The SmartInspect Router is a Windows service application which can receive SmartInspect log packets via TCP/IP or named pipes and routes them to different log destinations. The supported log destinations are the same as those from the SmartInspect libraries, namely log files, TCP/IP or named pipes. Two typical uses of the SmartInspect Router are to combine multiple client logs into a single log file and to collect logs in a central location. The SmartInspect Router is intended to provide a common logging infrastructure for distributed systems, multi-process applications and web applications.

Since SmartInspect is used more and more for web applications and distributed systems it became clear that we needed a server application that can receive logs via TCP/IP or named pipes and stores them in a central location. Many customers have expressed their need for such a solution.

We began work on the SmartInspect Router a few months ago and are happy to finally release the first version in this EAP. After installing the new EAP version, you can find the setup of the SmartInspect Router in the deploy directory of your SmartInspect EAP installation. The SmartInspect Router can be configured with a simple XML configuration file (please see the included help for details).

Releasing a completely new application is always a challenge and there might be a few things that don’t work correctly. If you encounter a problem with the SmartInspect Router, we would appreciate a comment in our SmartInspect EAP forum.

New SmartInspect 3.0 Beta Release

Wednesday, June 4th, 2008 by Dennis Gurock

We just released a new SmartInspect 3.0 beta version as part of our SmartInspect Early Access Program. You can grab the new version on My Gurock.com – our customer portal. Major new things:

  • Adapter class for Linq to SQL query logging (.NET only)
  • SmartInspect Delphi IDE Plugin with code instrumenter
  • New maxparts option for log file rotation
  • Redesigned log rotation (log files rotated by size now also include the time stamp, for example)
  • Added Browse History dialog to the Console

We also fixed and improved a couple of other things in this release. Please take a look at the release notes in the online help for a complete list of changes. Please provide feedback about this release in our forums or via email.

New SmartInspect Customer Testimonial

Friday, May 30th, 2008 by Dennis Gurock

We are lucky to get positive feedback about SmartInspect regularly, but once in a while there is an email or blog comment that really stands out. Kevin Powick of Trident Information Systems sent us such an email and we are happy that Kevin allowed us to publish it:

“I’m writing to tell you how pleased I am with SmartInspect. I had a nasty bug in one of my Windows Service programs. The service was silently aborting, even though the exact same codebase ran fine as a stand-alone application. I tried doing some logging of my own to text files, but I still could not find the problem.”

“After about a week of this nonsense I purchased SmartInspect. I spent maybe 40 minutes adding SmartInspect logging throughout my code, and 5 minutes after SmartInspect produced its first log file, I had the problem solved!”

“I don’t think I ever would have figured this out without SmartInspect. Thanks for a great product.”

Thanks a lot Kevin! It’s really great to hear how SmartInspect is helping customers to solve real-world problems. Did you have a similar experience with SmartInspect? We would love to hear from you.

10 Quick SmartInspect Console tips

Thursday, May 29th, 2008 by Dennis Gurock

Inspired by Nick Bradbury’s post about 10 Tiny FeedDemon Tips, here are 10 quick SmartInspect Console features you might not know about, even if you are a long-time SmartInspect user:

  1. In the Details toolbox (F7), you can see the time difference, time offset and timestamp of a log entry as well as the elapsed time between multiple log entries
  2. Use / and * on your keyboard to recursively collapse and expand log entries in the views
  3. Use <tab> and <shift+tab> to quickly switch between multiple views
  4. You can easily reorganize your views and categories in the View Categories toolbox with drag and drop
  5. Double-click on the status bar panels to quickly edit the related options (AutoView rules as well as TCP options)
  6. Right-click on the status bar panels to open context-sensitive menus
  7. Press <Ctrl+-> to reset the indentation level of the log entries of the current view
  8. Double-click on an item in the Call Stack toolbox to quickly jump to the related log entry in the current view
  9. Double-click on a thread in the ProcessFlow toolbox to create a new view for that thread
  10. Hovering the mouse cursor over a data point in the Watches Graph shows the exact details of the watch entry

I hope this was useful! We will soon publish a list with 10 not so well-known features of the SmartInspect libraries, too.

SmartInspect Link Buttons

Wednesday, April 30th, 2008 by Dennis Gurock

SmartInspect Link ButtonsIf you are a user of our .NET logging tool SmartInspect, why not show your customers, your partners and press representatives that you care deeply about your software’s quality, performance and security? Show them that you invest time and resources and use software tools like SmartInspect to ensure a great experience for your users.

We created a few link buttons so you can show your website visitors that you use SmartInspect to test and verify your software. Feel free to use these images on your website, in your online help and in other materials. You can download the link buttons from My Gurock.com, our customer portal.

(Unofficial) Python SmartInspect library

Monday, April 28th, 2008 by Dennis Gurock

python-logoMichael Elsdörfer, one of our customers, ported the SmartInspect Delphi library to Python. Although some parts of the library are (still?) missing, like the file protocol, it’s already quite complete and you can log via TCP/IP to the Console, use all kinds of log methods and even use advanced features like sessions. Michael writes in his posting:

Back when I was still writing a lot of Win32 apps in Delphi, one of my favorite tools was SmartInspect, a very nice logging tool that also ships with Java and .NET libraries. Unfortunately, I never got to use it that much, since shortly after I bought it I started to drift more and more into web development.

So, three days ago, I had the sudden impulse to take a break from my regular projects and write a Python client library. Just for fun, mostly, but I can see some opportunities in the future where it might come in handy. I wasn’t expecting that it would take three days either, but some of the final bugs in the end took some time to iron out.

From what we can see, Michael did a really good job of porting even small details of the library to python. I’m sure the library is quite useful when developing (and debugging) Python web applications remotely. Keep up the good work Michael!

SmartInspect Early Access Program

Thursday, April 24th, 2008 by Tobias Gurock

SmartInspect EAP

Every now and then we get questions about beta versions or technology previews of upcoming SmartInspect releases. So far, we have been hesitant to release beta versions. But in order to become a bit more transparent in what we are working on for SmartInspect, we decided to start a SmartInspect Early Access Program (EAP). In this EAP, we will provide interested customers with technology previews and beta versions of SmartInspect. We plan to release new EAP versions on a frequent basis.

To download EAP versions of SmartInspect, you need to have a customer account on our My Gurock.com customer portal and an active SmartInpect support plan. After logging in to My Gurock.com, you should notice a new menu item called “EAP” with the latest EAP releases. Note that EAP versions might include incomplete or buggy features and/or might not work as expected. They haven’t gone through the entire QA cycle yet and are only provided for testing purposes. These versions are not intended to be used on production systems and are therefore not fully supported.

What’s new in this EAP version?

The first version of the EAP is a preview version of the upcoming SmartInspect 3.0 major release. Please note that this EAP release is not a feature-complete preview version of SmartInspect 3.0. It contains most major features of the upcoming major version but lacks several smaller features which will be added over the next few weeks. We will post more about the 3.0 version soon. Here is a short list of new major features that are already available in the first EAP release:

  • New named pipe protocol: The new named pipe protocol is the new default protocol instead of TCP/IP and provides a great performance increase for local live logging. Also, since it’s very fast to test if a pipe is available, automatically reconnecting is really useful for production systems now. This means that you can start the Console when your application is already running and you will immediately receive live logging packets.
  • Improved SmartInspect sessions: It is now possible to specify log levels on a per-session basis. Sessions can now also be configured via SmartInspect configuration files. This is really great for production systems like ASP.NET applications, as you can now enable or disable logging for specific users directly via config files.
  • Support for log file encryption: SmartInspect now supports log file encryption. You can specify an encryption key for log files in the SmartInspect libraries and the logging data is automatically encrypted with AES. This feature can be useful if you log sensitive information that has to be protected.
  • Asynchronous logging: You can now specify for each logging connection if you want to log asynchronously. The libraries will create a (configurable) buffer and process logging data in a separate thread. This feature is very useful for high-performance production systems or for logging via TCP/IP with regular reconnects.
  • Configuration timer: The new configuration timer allows you to automatically reload SmartInspect configuration files when the config has changed. This allows applications to pick up logging configuration changes without the need to be restarted.
  • Sorting of packets: An often requested feature is the ability to merge log files based on the timestamps of the log packets. The SmartInspect Console now supports this with its new Sort feature.
  • Improved Console navigation: We also added new navigation features to the Console like Go to Time, Synchronize and back-/forward actions.

There are other new features that are not mentioned in the list above. Please refer to the What’s New section of the online help for a complete list of new things.

Installing EAP and official versions side-by-side

It is generally possible to install EAP and official releases on the same machine, but please be aware of the following issues:

  • You should install EAP releases into a directory different from your official SmartInspect installation. Doing otherwise overrides your existing installation.
  • Do not activate the IDE library integration in the EAP setup if you plan to further use the official versions of the libraries. Doing otherwise can override your existing integration.
  • After installing an EAP release, double-clicking log files in the Windows Explorer opens them with the new EAP versions of the Console (same for config files and the Configuration Builder).

To avoid the possibility of interfering with an existing installation altogether, it is highly recommended to install EAP releases on virtual machines only. Please note that you can reuse your existing SmartInspect 2.x license key for this EAP version.

Will SmartInspect 3.0 be free for existing customers?

If you have an active support plan when SmartInspect 3.0 is released, you can download and use the new SmartInspect version without paying any upgrade fees. And because every SmartInspect license already includes one free support plan year, you will get the 3.0 for free if you purchased SmartInspect recently (or if you plan to purchase new licenses now). If your support plan expired, you can renew your support plan by logging in to My Gurock.com.

Providing feedback

If you are experiencing problems with this (or a future) EAP version or if you have suggestions or feature requests, please post them it in the related forum or email us. We would really love to hear your feedback!