Client Logging

Fortress clients can be configured to log certain operations to a file for support and debugging purposes. Fortress clients that can be logged include the Fortress GUI client, the IDE client, the command line client, and the Shadow Folder plugin (since it is actually a client of the Fortress server, too).

Note that the IDE client also has an additional log file (see below) that can be turned on that just logs the calls from Visual Studio, which can often be helpful in tracking down IDE issues.

Enabling Logging – Finding the Configuration File

Except for the Shadow Folder plugin, the log is disabled by defult (the Shadow Folder plugin only logs errors by default; you’ll need to edit the file to see more verbose messages). You can enable the log file by editing the application’s <app>.config file for the executing assembly. The locations of the <app>.config files for the various clients are found below.

  • Fortress GUI Client – VaultGUIClient.exe.config

    This file can be found in the folder where the Fortress client executables are installed, usually C:\Program Files\SourceGear\Fortress Client

  • Shadow Folder – Web.config

    This file can be found in the folder where the Shadow Folder plugin is installed, usually C:\Inetpub\wwwroot\VaultService\VaultShadowFolder

  • Visual Studio .Net 2003 – devenv.exe.config

    This file can be found in the folder where the Fortress client executables are installed, usually C:\Program Files\SourceGear\Fortress Client.

  • Visual C++ 6 – msdev.exe.config

    This file is not installed with the Fortress clients. Copy VaultGUIClient.exe.config to create msdev.exe.config in the folder where the Fortress client executables are installed, usually C:\Program Files\SourceGear\Fortress Client.

  • Visual Basic 6 – vb6.exe.config

    This file is not installed with the Fortress clients. Copy VaultGUIClient.exe.config to create msdev.exe.config in the folder where the Fortress client executables are installed, usually C:\Program Files\SourceGear\Fortress Client.

Enabling Logging – Editing the Configuration File

Open this file in Notepad or some other text editor. The logging sections can be found near the end of the file. The relevant settings look like:

<appSettings> 
 <!-- 
  enableLogging turns on client-side logging to a file in your temp directory (%TEMP%). 
 If you think you have this file configured properly, but no log file appears 
 in your temporary directory, check the system event log (we send messages there if we 
 can't open the log file). 
      
 <enableLogging> settings: 
  value="[true|false]" - When true logging is enabled, when false no messages will be logged. 
 --> 
 <add key="enableLogging" value="false" /> 
 <!-- 
 classesToLog lets you filter some log messages by class name. SourceGear support will be 
 able to suggest the appropriate class names to use for specific problems. "all" will 
 result in lots and lots (really) of messages. 
      
 <classesToLog> settings: 
  value="class1,class2,class3,..." - Log these classes; separate with commas. 
  value="all" - Log all messages from all classes. 
 --> 
 <add key="classesToLog" value="" /> 
 <!-- 
 includeLoggingStackTraces includes stack traces with each log message in the client-side log. 
 enableLogging must be set to "true" for this to have any effect. 
      
 <includeLoggingStackTraces> settings: 
  value="[true|false]" - When true stack traces are included, when false they are not. 
 --> 
 <add key="includeLoggingStackTraces" value="false" /> 
 <!-- 
 includeThreadInfo includes thread names and IDs with each log message in the client-side log. 
 enableLogging must be set to "true" for this to have any effect. 
      
 <includeThreadInfo> settings: 
  value="[true|false]" - When true thread info is included, when false it is not. 
 --> 
 <add key="includeThreadInfo" value="true" /> 
</appSettings>

Set the enableLogging setting’s value to true to enable logging. However, this alone won’t be very useful, because you also need to enable specific classes for logging.

What Should I Log?

If you simply enabled logging but didn’t set any classesToLog, you’ll see very few messages in the log file. You’ll want to change the classesToLog setting’s value to something other than the default to start seeing helpful information. Here are some of the available logging classes, which you can combine in a comma separated list as per the comment’s example. Not all of them apply to all Fortress clients; for example, shadowfolder only applies to the Shadow Folder service. Remember than you’ll need to restart your client for these changes to take effect.

  • All – Enable all messages to be logged. This include very low-level (and numerous) events such as the mutex take/release, working folder creation/deletion, etc. The class string will appear in the log file with each message, so they can be grepped.

  • Mutex – Mutex creation, take, release, and disposal

  • Wf – Working folder creation, lock, unlock, disposal

  • Refresh – The work the client does to request, retrieve, apply a tree structure delta from the server, and save the results to disk.

  • Get – the work the client does to request files from the server, download them, and send them to the update thread..

  • Checkoutlist – Writes our the partial check out lists as they are received from the server, and the full in-memory list after they have been merged.

  • Mergebranches – Logs information about the merge branches process

  • Shadowfolder – Logs information about Shadow Folder operations.

You can always specify all if you are not sure where the problem is, but your log file may be huge.

Where is the Log File?

You can find the log file in the %TEMP% directory of the user running the Fortress client. If you’re running the standalone GUI client or the IDE client, simply open a Windows Explorer window and type %TEMP% into the location bar at the top and press Enter to find this folder. The file will be named something like “VaultGUIClient.txt”.

If you want to find the Shadow Folder’s log file, look in the temporary directory of the user the web service runs as. Usually, this is the ASPNET user, whose temp folder is something like C:\Documents and Settings\<machine name>\ASPNET\Local Settings\Temp. If you have configured the Shadow Folder service to run under an impersonated account, check that users’s Local Settings\Temp folder.

Special IDE Log File

In addition to the log file above, the IDE has an additional log file that just outputs calls from Visual Studio. This is often helpful in determing issues related to Visual Studio (instead of issues within the Fortress operations libraries).

To activate this log, create a registry entry named SCCLogFileName in HKEY_LOCAL_MACHINE\SOFTWARE\SourceGear\Fortress Client. The value of SCCLogFileName is the path to the log file that you want to create. Once this registry entry exists, the IDE will log entries to it, after the next restart of the IDE.