One thing that is commonly missed is that changes to FBKC, changes to FLKC, and changes to the IAM are all three separate knock responses and only one is active at any given time. So, if you look at only FBKC, you are not getting the whole picture. FBKC is not the response to ALL knock events, it is the response to knock events when it happens to be active. This is all based on a number of conditions that are outlined in the knock control sticky. That is, the ECU, at any given time, is "poised" to respond to knock events using only one of the three knock control elements OR it is "poised" to do nothing at all in response to a knock event (say at low RPM).
Another common misconception is that the ECU will make a change to FLKC or the IAM based on FBKC. This is false. The ECU could care less what FBKC is at any given moment - it could be -2, -12, doesn't matter, it is not going to change FLKC or IAM at all. That is because FBKC, based on those conditions in which it is active, is the proper response given those conditions. Only changes to the FLKC and the IAM are linked. IAM can be thought of as a means of get timing roughly where you need to be and then FLKC does the finer adjustments. This is why the entire FLKC table is cleared when the IAM changes.
It is more difficult to determine when the FLKC changes because when you log it, you are logging the applied (learned) correction for the currently accessed cell. You can log 'fine learning table offset' and if the offset stays the same and FLKC changes, then a change was made to that cell. Easier, as already mentioned, would be to check a learning view before and after the run.
With the latest RomRaider logger definitions, I added the 'knock sum' parameter. All USDM Legacy GTs support this parameter. It is easily your best bet to track knock events because it deals with the knock signal which is exactly what determines a knock "event". Changes to FBKC, FLKC and the IAM are all based on this same knock signal. If your ECU support the knock sum, this is the only thing that I would log (while doing a learning view snapshot before and after the run). It will also improve your sampling rate because it is a 1-byte parameter. The only downside is that it will not increment with consecutive knock events, but this is not generally an issue.