Q:

Manually extracting reflog when git reflog fails

The HEAD commit object of my .git repo was lost due to a machine crash:
$ git rev-parse HEAD
1f411c372caab4767638df0b47be5e2f576cb582

$ git reflog 
error: object file .git/objects/1f/411c372caab4767638df0b47be5e2f576cb582 is empty
fatal: loose object 1f411c372caab4767638df0b47be5e2f576cb582 (stored in .git/objects/1f/411c372caab4767638df0b47be5e2f576cb582) is corrupt

It turns out there are only a few files that are corrupted, but because the HEAD commit is one of them, I can't locate the hash of the preceding commit.
However, my understanding of reflog is it keeps a history of all the changes to HEAD, even if they are unreachable, so I expect there to be a place in .git where I can locate the previous hash, and I'm surprised reflog is failing.
Is there a way to dump the reflog manually and maybe recover this easily?
I don't actually care if I loose only the last commit (or even last few commits) because my working dir is OK.  But I don't want to lose all of the last 4 days since I pushed up to my server.
If I can find the right SHA, I can recover simply with
git checkout -B recovery

and go on my merry way.
Thanks!
P.S. Yes I could treat my working directory as a simply squash of the last 4 days of work, but would prefer to capture the history if possible.
UPDATE.  FYI: How I actually recovered using the answer:
tail .git/logs/HEAD
8030ad73461b75e3ce575d5896a9511f6036e45d 1f411c372caab4767638df0b47be5e2f576cb582 REDACTED 1432014000 -0700 commit: REDACTED

git branch -f recovery 8030ad73461b75e3ce575d5896a9511f6036e45d
echo "ref: refs/heads/recovery" > .git/HEAD

A:

Look at the bottom of the file .git/logs/HEAD, which tracks all changes to HEAD.
(And branch changes are tracked in the files in .git/logs/refs/heads/.)

