Interesting topic. I agree with jschell. It is really hard to get the right data logged out from compiled software. It really requires a multidimensional matrix e.g. class x instance id x methods or something like that. Since, you will never get coders to insert handles in each and every method, the only viable solutions I can see are 1) a set of base classes with carefully placed handles, 2) AOP or 3) code generation. I think some OOP Patterns like Command, Stategy and State tries to structure computation in a uniform manner, so base classes supporting these patterns might be the place to add handles into. At work we make code generated Command implementations. If we have the logging level set to debug, we get a log entry when a command completes/aborts. In most cases this is information overload, so we instead raise the the General logging level to Info and add some logging exceptions per class. However, this is currently requiring a recompile.... Pattern-wise this should be possible to generalize e.g. into a LoggingManager with a configuration that can be changed at runtime. Log4Net can monitor when its config file is changed at runtime. Maybe it also can filter logging based on classes, but I don't think there is a concept filtering per entity id or method tags.