How to read WebLogic 10.3 transaction logs (TLOG)

When analyzing distributed XA transaction problems it can prove useful to have a look at Oracle WebLogic’s internal transaction backup log file (TLOG). Since that file is all binary, it needs to be converted into a more human readable format first. In WebLogic 10.3, the TLOG file can be converted to text using this class:

weblogic.transaction.internal.StoreTransactionLoggerImpl

The class needs the transaction library from the modules directory and weblogic.jar in the classpath. Below is a start script for Windows. Depending on the exact WebLogic version, you may need to adjust the name of the transaction jar file. WEBLOGIC_HOME points to the WebLogic installation directory.

@echo off
set WEBLOGIC_HOME=D:/Dev/weblogic10
set WEBLOGIC_TRX_MOD=%WEBLOGIC_HOME%/modules/com.bea.core.transaction_2.7.0.0.jar
set WEBLOGIC_JAR=%WEBLOGIC_HOME%/wlserver_10.3/server/lib/weblogic.jar
echo.
echo Loading transaction library from...%WEBLOGIC_TRX_MOD%
echo Loading weblogic.jar from..........%WEBLOGIC_JAR%
echo.
if not exist %WEBLOGIC_TRX_MOD% goto missing
if not exist %WEBLOGIC_JAR% goto missing
goto allok
:missing
echo
echo One or more files are missing, please make sure paths are set correctly
goto end

:allok

java -Xmx512m -cp %WEBLOGIC_TRX_MOD%;%WEBLOGIC_JAR% weblogic.transaction.internal.StoreTransactionLoggerImpl %*

:end

Call the script with no arguments to get a list of valid parameters. You probably want to start the conversion with something like this:

tlogconv.cmd D:\domain\servers\myserver\data\store\default myserver

Depending on the TLOG size it may take quite some time to process it. Here’s a small sample output after a successful conversion:

Loading transaction library from...D:/Dev/weblogic10/modules/com.bea.core.transaction_2.7.0.0.jar
Loading weblogic.jar from..........D:/Dev/weblogic10/wlserver_10.3/server/lib/weblogic.jar

<18.11.2011 16:04 Uhr MEZ> <Info> <Store> <BEA-280008> <Opening the persistent file store "_WLS_myserver" for recovery: directory=D:\domain\servers\myserver\data\store\default requestedWritePolicy="Cache-Flush" fileLockingEnabled=true driver="NIO".> 
<18.11.2011 16:04 Uhr MEZ> <Info> <Store> <BEA-280009> <The persistent file store "_WLS_myserver" (0cec60c8-3fc4-47b5-b6a8-13a366175477) has been opened: blockSize=512 actualWritePolicy="Cache-Flush(single-handle-non-direct)" explicitIOEnforced=false records=227.> 
+------------------------------------------------------------------------------+
| Transaction Log Dump |                                                       |
+----------------------+                                                       |
| Current time = Fri Nov 17 23:04:23 CET 2011                                  |
| Current directory = "D:\Temp\."                                              |
+------------------------------------------------------------------------------+


| Class Name = weblogic.transaction.internal.ResourceCheckpoint                |
| Object = ResourceCheckpoint={{WLStore_mydomain__WLS_myserver, props= |
| {}}, {WLStore_espresso_LoggingStore, props={}}}                              |
+------------------------------------------------------------------------------+


| Class Name = weblogic.transaction.internal.ServerCheckpoint                  |
| Object = ServerCheckpoint={WLSS7_H99_SRV01+H51BB87.domain.com:13275+wlss7+t3 |
| +}                                                                           |
+------------------------------------------------------------------------------+