Exec sp_lock (which is deprecated, included only for backward compatibility with SQL 2000 and should not be used for new development) will tell you the current locks in the system.
There is no record of historical locks, no log of what's been taken by what in the past. If you need that (and I'm curious why), you'll need to trace it. Be aware, those are nigh-frequency events and the trace is going to hurt the server. Short duration, minimal columns, save to a fast local drive.
p.s. The replacement for sp_lock is a DMV
SELECT <columns required> FROM sys.dm_tran_locks
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability
We walk in the dark places no others will enter
We stand on the bridge and no one may pass