Writing text files at publish time is really a bad idea. You will for starters have to set your Publisher to be single threaded, or run the risk of the text file to be updated by multiple publish actions at the same time (and failing with file locks). Also you rule out multiple Publisher machines (even if you would write the text file to a network location, multiple Publishers, still introduce the threading issue you forced upon yourself).
To get more on the topic, the Publisher is running under an impersonation account, since it requires full access to all items to render them correctly. Hence you will find that once an item is rendered by the Publisher, it is not the same user who scheduled the Publish Transaction.
Basically your only resort is to find the Publish Transaction that the current (rendered) item belongs to, you can see here how Mihai approached it http://yatb.mitza.net/2012/03/get-current-publish-transaction.html, but it remains a bit of a hack.
In your situation, you are really best of by using an event handler on the scheduling of the Publish Transaction. So explain to whomever is posing your technical restriction, that event handlers are a part of a Tridion implementation that should never just be ruled out for whatever (silly) reason.
Alternatively you could write a UI extension, to log the Publish action. However I would put my money on challenging the technical restriction, rather than spend too much time on trying alternative routes.