We've done it both ways -- write out a log to the network; write a log to a dictionary in the drawing. Obviously the latter means a non CADD type cannot view the data. Both ways share common design requirements, including "what do we log?". If you log everything you will bloat, beyond comprehension, the internal or external log. You have to decide "What are the critical activities?".
For us it distilled down to the datestamp and loginname for these simple events:
(1) When a drawing was opened
(2) When a drawing was saved
(3) When a drawing was renamed
(4) When a drawing was repathed
It doesn't sound like much but it gives us the ability to trace the history of the drawing. When things go wrong you generally know when; we just look back thru the logs and go "Aha!". Dialing ... "Se7en, can you come down to my office for a second?"
Also, storing the information in a concise format will help lots too. While english like sentences make it easy to casually browse logs, it can contribute to bloat, whereas a bitcoded system for identifying activies and using the compact date format as returned by the cdate system variable can save you precious bytes. It really does add up. You can write utitlities to search the data easily enough.
You mileage may vary; hope this gives you some ideas for designing your own system. Cheers.
PS - You could use Se7en's upcoming huffman encoder to save even more bytes :)