RLM Log Reader
To download the latest version of RLM Log Reader, go to http://sourceforge.net/projects/rlmlogreader.
Updates
1.1.0 - March 31, 2014: Output the license token count rather than assuming that each checkin/checkout event is one seat.
What it does
This utility reads usage log files from Reprise License Manager (RLM) and produces reports that can be more easily read by a human and analyzed in spreadsheet software. RLM is a third-party license manager for Independent Software Vendors (ISVs) to enforce license policies with their products. RLM Log Reader is not affiliated in any way with Reprise License Manager or Reprise Software. For more information on their products, visit their website: http://www.reprisesoftware.com.
Supported log formats
RLM Log Reader reads the std and detailed variations of report logs and ISV logs from Reprise License Manager. The report log is designed to be parsed and contains more data, so if you have it, use it. Otherwise, use the ISV log file. Keep in mind that the ISV log file isn't fully documented so it is possible to have a file with data in it not handled by this utility. If you run into any errors, please contact me and send the file, if possible.
Configuring RLM to output log files
The following steps assume you already have RLM installed, a license key is installed, and the server is running.
- In a web browser, go to http://HOSTNAME:5054, where HOSTNAME is the computer hostname of the license server and 5054 is RLM's web port.
- On the left side, click Status
- Under the ISV Servers section in the center of the page, click the button under OPTIONS
- To add a report log, add the following line to the form:
REPORTLOG +./report.log
To add an ISV log, add this line to the form:
DEBUGLOG +./isv.log
- Click Update Options
- On the left side, click Shutdown
- Click SHUT DOWN SERVER (NOTE: This will disrupt any current usage of licenses on this server)
- On the left side, click Reread/Restart Servers, then REREAD/RESTART
The log files will be located in the same directory as the RLM binary files. If you need assistance, consult the RLM License Administration Manual: http://www.reprisesoftware.com/RLM_License_Administration.html
How to use RLM Log Reader
- Run the RLM Log Reader application
- Click Browse File... and select the log file to read. If you don't have any on hand, the installation itself contains SampleLog_Report.log and SampleLog_ISV.log.
- Click Select Directory... and select the directory where the report files will be written
- Click Generate to write out the reports and display the output directory
Explanation of log reports
The following lists each report document and what data they contain.
Summary
- Log Data Summary For: Full path to the log file used to generate the reports
- Server Name: Hostname of the computer where RLM runs
- Server Start(s): Provides the date, time, and server hostname of each RLM start event
- Server Shutdown(s): Provides the date and time of each RLM shut down event
- Product(s): A list of every product available through this RLM server
- Users(s): A list of every user who has checked out a license through this RLM server. This is the computer user name.
- Denials(s): A list of every denial experienced through this RLM server. A denial occurs when the maximum number of tokens allowed by a license are checked out and an additional request for a token is made. Each denial instance contains the date/time, the product name, the product version, and the user name.
UsageOverTime
- Date/Time: The date and time of the checkout or checkin event
- [product] Licenses in use: The current number of license tokens in use, by product
- [product] Unique user count: The current number of unique users that have licenses checked out, by product. Since the report log provides a running count of licenses checked out, but not who checked out tokens, there can be some ambiguity regarding the real unique user count if the log file wasn't configured to start when the server started. If checkouts happened before the log started, the unique count is assumed to be 1. The actual count is somewhere between 1 and the number of tokens currently checked out.
- [product] Total licenses (report log only): The total number of tokens available, by product. This value can change as licenses are added/removed to/from RLM.
UsageDuration (report log only)
- Checkout Date/Time: The date and time of the checkout
- Checkin Date/Time: The date and time of the checkin
- Product: The product that was used
- Version: The version of the product that was used
- User: The user who used the product. This is the computer user name.
- Duration (HH:MM:SS): The duration of product usage, in hours:minutes:seconds
TotalDuration (report log only)
- User: The user who used the product. This is the computer user name.
- [product] Duration (HH:MM:SS): The total duration the product was used by that user, in hours:minutes:seconds
Note: The report log displays time in hours:minutes:seconds, while the ISV log displays time in hours:minutes
Known issues
When using RLM Log Reader from a terminal on Linux, the following terminal output appears:
X Error: BadDrawable (invalid Pixmap or Window parameter) 9
Major opcode: 62 (X_CopyArea)
Resource id: 0x0
It doesn't appear to affect performance of the application. It seems to be caused by the presence of an application icon, but I'm not sure how to fix it. If you have any ideas, let me know.
Building instructions
This section is only relevant to people who want to build RLM Log Reader from the source code, presumably to make changes to it.
I've included my personal build documentation here so that (1) other people can build it and (2) so I can remember how to build it months from now. I kept the documentation specific to the platforms and tools I used, but thanks to the CMake code, it should be possible to build it for different compilers on different platforms. These instructions only use free tools so it is ideal for someone setting up a build environment for hobby projects. Hope it helps!
Mac OS X 10.7.5
- Download and install CMake (with command line tools)
- Set up Xcode
- Download and install Xcode
- Open Xcode (it asked to do a system component installation, which I let it do)
- Go to Xcode > Preferences
- Install Command Line Tools
- Build Boost 1.53
- Download Boost
- Extract files from the archive to /Users/steve/Desktop/boost_1.53.0_static
- In the terminal, change directory to the extracted files
- Run these terminal commands:
./bootstrap.sh
./b2
- Build Qt 4.8.4
- Download Qt 4 source code
- Extract files from the tar archive
- In the terminal, change directory to the extracted files directory
- Run these terminal commands:
./configure -prefix /Users/steve/Desktop/qt_4.8.4 -arch x86_64 -debug-and-release -opensource -confirm-license -no-qt3support -no-openssl -no-phonon -no-webkit -nomake demos -nomake examples
make
make install
- Building RLM Log Reader
- Unzip the RLM Log Reader source code
- Make a _build directory for the binary files alongside the RLMLogReader subdirectory
- Change directory to the _build directory
- To create the makefiles used for the build process, run this CMake command:
cmake ../RLMLogReader -DQT_QMAKE_EXECUTABLE=/Users/steve/Desktop/qt_4.8.4/bin/qmake -DBOOST_ROOT=/Users/steve/Desktop/boost_1.53.0_static
- To build, run this command:
make
- To stage all the installation files in the _install subdirectory, run this command:
make install
- To build the zip file containing the install and copy it into the _package subdirectory, run this command:
make package
- To build the zip file containing the source code and copy it into the _package subdirectory, run this command:
make package_source
CentOS 5.5 (32-bit and 64-bit)
- Build CMake
- Download CMake
- Extract source files from the tar archive
- In the terminal, change directory to the extracted files directory
- Run these terminal commands:
./configure
make
- Then under root, run this:
make install
- Build Boost 1.53
- Download Boost
- Extract files from the archive to /home/steve/Desktop/boost_1.53.0_static
- In the terminal, change directory to the extracted files
- Run these terminal commands:
./bootstrap.sh
./b2
- Build Qt 4.8.4
- Run this command under root to install some needed X libraries:
yum install libXext-devel
- Download Qt 4 source code
- Extract files from the tar archive
- In the terminal, change directory to the extracted files directory
- Run these terminal commands:
./configure -prefix /home/steve/Desktop/qt_4.8.4_static -debug-and-release -static -opensource -confirm-license -no-qt3support -no-openssl -no-phonon -no-webkit -nomake demos -nomake examples
make
make install
- Building RLM Log Reader
- Unzip the RLM Log Reader source code
- Make a _build directory for the binary files alongside the RLMLogReader subdirectory
- Change directory to the _build directory
- To create the makefiles used for the build process, run this CMake command:
cmake ../RLMLogReader -DQT_QMAKE_EXECUTABLE=/home/steve/Desktop/qt_4.8.4_static/bin/qmake -DBOOST_ROOT=/home/steve/Desktop/boost_1.53.0_static
- To build, run this command:
make
- To stage all the installation files in the _install subdirectory, run this command:
make install
- To build the zip file containing the install and copy it into the _package subdirectory, run this command:
make package
- To build the zip file containing the source code and copy it into the _package subdirectory, run this command:
make package_source
Windows 7 64-bit (produces 32-bit binaries)
- Download and install Microsoft Visual C++ 2010
- The previous install will place the files msvcp100.dll and msvcr100.dll in the C:\Windows\SysWOW64 folder. Copy them to C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\redist\x86\Microsoft.VC100.CRT so CMake can copy them to the installation during the build process. These files gets installed to that location when installing Visual Studio 2010, but not when installing Visual C++ 2010.
- Download and install CMake (add CMake to the system PATH)
- Build Boost 1.53
- Download Boost
- Extract files from the archive to E:/3rdpartylibs/boost_1.53.0_static
- Go to Start > All Programs > Microsoft Visual Studio 2010 Express > Visual Studio Command Prompt
- Change directory to the extracted files
- Run these terminal commands:
bootstrap.bat
b2
- Build Qt 4.8.4
- Download Qt 4 source code
- Extract files from the archive to E:/3rdpartylibs/qt_4.8.4_static
- Go to Start > All Programs > Microsoft Visual Studio 2010 Express > Visual Studio Command Prompt
- Change directory to the extracted files
- Run these terminal commands:
configure.exe -debug-and-release -static -opensource -confirm-license -no-qt3support -no-openssl -no-phonon -no-webkit -nomake demos -nomake examples
nmake
- Building RLM Log Reader
- Unzip the RLM Log Reader source code
- Make a _build directory for the binary files alongside the RLMLogReader subdirectory
- Open CMake
- Set the source code directory to the RLMLogReader subdirectory
- Set the binary directory to the _build directory
- Click the Add Entry button and add a variable named BOOST_ROOT of type PATH with the value E:/3rdpartylibs/boost_1_53_0
- Click the Add Entry button and add a variable named QT_QMAKE_EXECUTABLE of type FILEPATH with the value E:/3rdpartylibs/qt_4.8.4/bin/qmake.exe
- Click the Generate button and choose generator Visual Studio 10 to create the project files
- Open Microsoft Visual C++ 2010
- Go to File > Open Project/Solution and select RLMLogReader.sln from the _build directory
- To build, go to the Debug menu and choose Build Solution. If you are deploying the application, be sure to change the Solution Configuration dropdown from Debug to Release.
- To stage all the installation files, right-click on the INSTALL project in Solution Explorer and choose Build. The files are copied to _build/_install.
- To build the zip file containing the install, right-click on the PACKAGE project in Solution Explorer and choose Build. The package is copied to _build/_package.
- To build the zip file containing the source code, right-click on the PACKAGE_SOURCE project in Solution Explorer and choose Build. It's copied to _build/_package.
Automated testing infrastructure
The Test subdirectory of the source code directory contains a selection of unit tests and integration tests that run every time code has been changed. If you place additional log files in the ExtraTestFiles subdirectory (alongside the TestFiles directory), reports for these files will be generated and any exceptions hit during that process will be reported as a test failure. I kept all log files from customers I had in this directory so I could be confident my changes didn't break their compatibility with the application. Anonymized excerpts from these files ultimately became part of the integration test suite.
About RLM Log Reader
Designed and programmed by Steve Robinson
Released under the GNU General Public License, which means it's free software.
Well it's just a license manager log reader, I didn't exactly gather a team for the fame, riches, and glory that would follow! Nonetheless, I would like to thank the following people:
- Raja Olimuthu: For trying out the tool and giving feedback on how it could work better
- Scott Fowler: For reviewing the code and giving me advice on how to make it better
- WooThemes: For providing the application icon images through their excellent WooFunction Web Icon Set