That being said, it is not clear to me how a hash chain guarantees that the data it stores hasn't been modified.
The basic idea is, you have a chain of 'transactions' (like in bitcoin or think git commits) und you store the hash of the content + the hash of the member before as a checksum. This way, if you alter the log file, the hash for the modified entry is suddenly different, and the chain breaks, because the next member used your hash as input to calculate their checksum. So you can not only see that the file was tampered with, you can also say which entry was modified.
Edit: Merkle trees[0] generalize this concept into trees, which are e.g. used in ZFS (the file system), git and in the blockchain.
(Social factors and forks to change our minds on blockchains notwithstanding)