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