You can now follow us on Twitter.

Archive for the 'Delphi' 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.

We are now twittering

Monday, June 9th, 2008 by Dennis Gurock

Well, not really we, unless I can convince Tobias also to twitter. You can follow me on twitter and get the latest updates from Gurock Software and everything else that is happening around here.

» Follow me on Twitter

I would also love to hear from other MicroISVs or Delphi developers who are twittering. Just leave a comment, follow me on twitter or email me. Thanks!

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 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!

SmartInspect Executive Summary

Tuesday, April 1st, 2008 by Dennis Gurock

imageWe created and published a SmartInspect Executive Summary document as a help and guide for new customers and decision makers. The Executive Summary document explains SmartInspect (and logging) from a non-technical standpoint and lists SmartInspect’s benefits, key facts and its licensing structure. This document is the perfect guide for decision makers who want to learn more about SmartInspect in a short period of time (it’s only 3 pages).

Quite a few of our contacts from new prospective customers are assigned with the task to evaluate different logging tools and to recommend a solution to the person who will make the final decision. We wanted to help these people by providing them with a document that they can use to inform decision makers about SmartInspect.

This document is also a great tool for developers who want to use SmartInspect and who have to convince their bosses that SmartInspect is the right tool.

If you think that any important information is missing from the document, I would love to hear from you (either leave a comment or email me).

» SmartInspect Executive Summary (PDF)

SmartInspect TCP/IP Performance Improved

Tuesday, March 18th, 2008 by Dennis Gurock

We just released SmartInspect 2.3.4. You can download the new version from My Gurock.com. It’s a minor release with just two changes: we optimized the TCP/IP server in the SmartInspect Console even further and fixed a bug that could block client applications for a few hundred milliseconds once in a while.

The SmartInspect TCP/IP code in the Console is actually quite complicated. It’s not just a simple TCP/IP server that receives logging packets and displays the data in the Console. To differentiate ourselves from competing products, we invested a lot of time in the past to make sure that the SmartInspect Console is blazingly fast and makes use of smart queues, dispatcher threads and techniques to reduce GUI updates.

I wrote the original code, but after Tobias refactored the logic over the past few weeks, he was able to optimize the TCP/IP server to make it three times as fast as before without reducing the overall responsiveness of the Console. Our tests haven’t shown any problems, but if there’s anything that’s not working optimally for you, we would love to hear from you.