If I understand correctly, you are on the path to create a nightmare to maintain.
Your assembly should have no knowledge of who is consuming it. Imagine tomorrow there's another context on which your assembly is used, you'll have to change your code again and add more dependencies that shouldn't be there on the first place.
IMHO, you either create an OnError event, on which you call the appropriate delegate the consumers of your assembly designate for it, or at the very least you do something similar to what System.Console.Out does; that is, you create a property of type TextWriter which you use to log all errors by default, but allow the consumers of your assembly to have a setter for this property so that they can redirect the log to their own TextWriter and handle the messages as appropriate.
Does that make sense?