• Okay, I'm not a DBA, so take this with a grain of salt.
    What if you had a table that held the size of the log over the course of the day...
    CREATE TABLE LogSizeStats (
            LogSize DECIMAL(10,2),
            TimeCheck DATETIME
    );
    GO


    Then executed something like this in a job that ran every N minutes...
    INSERT INTO LogSizeStats (LogSize, TimeCheck)
    SELECT
        GETDATE() AS LogTime
        ,(total_log_size_in_bytes - used_log_space_in_bytes)*1.0/1024/1024 AS [free log space in MB]
    FROM sys.dm_db_log_space_usage;

    Then you'd have to correlate that with what's going on on your server. What's running when - using Profiler or something like it.(Can this be done with Extended Events?)

    Then you'd just correlate the growth spikes with stored procedures etc are running just before the spike happens.