robert.diley (3/10/2015)What it does log are page deallocations:
"The DELETE statement removes rows one at a time and records an entry in the transaction log for each deleted row. TRUNCATE TABLE removes the data by deallocating the data pages used to store the table data and records only the page deallocations in the transaction log."
Which is why TRUNCATE will always fail if a foreign key is defined. It's operating at page level, not row level, so has no idea what values are in individual rows and hence whether deleting them would break a foreign key constraint. Therefore it disallows the operation regardless of the data.