Don't use a control as your log at all. Instead write a log collection class that has the properties you desire and make visible false.
Then write the little bit of code that is needed to dump that collection to a variety of user interface elements like
SendToListBox methods into logging object. Also add filtering capabilities to these methods.Update the UI log only as often as it makes sense and giving the best possible performance, and more importantly, letting you reduce the UI overhead when the log is changing rapidly. Don't tie your logging to a piece of UI, that's a mistake make future headache.
In the long run, a good UI for a logger is probably a custom control. But in the short run, you just want to disconnect your logging from any specific piece of UI. Most people use controls as data storage and only later realize that this is a mistake, and by then it's hard to unwind.