Here is my view on how we should handle logging:
There should be a single static class that handles all logging, most likely called
TridentLogger. In this class would be static methods
error(). Each one would link back to an internal private method with a passed enum of the type of the record. From there, the method will look up the stack trace and see what class called the initial method, get the classloader and look up the plugin. Because each plugin will have its own classloader, two plugins would not collide if they had the same package and class names. From there, the method would pass it down to System.out or System.err respectively. The final output should look like
[12:04:32][Info][TestPlugin] Test Info Log.