On my PvP server project, i've created an administrative record system. It's too specific to my core to be ripped easily, however.
Sort of similar to your first idea.
Essentially you have:
.record lookup account [account name]
.record lookup character [character name]
.record add [account name] [record type] [message]
Upon looking up someone's record you get something like this:
Code:[2-14-10] [Punishment] [Automatic]: 72-hour suspension. [2-14-10] [Warning (10)] [JoeTheGM]: Don't waste GM's time. [2-14-10] [Ticket]: i want gm [2-11-10] [Warning (10)] [Eradicator]: Do not waste the GM team's time with tickets that are clearly against the rules. [2-10-10] [Ticket]: give me gold