'@param namespace: The namespace for this logger.  Uses a dotted
notation, as used by python modules.  If not L{None}, then the name
of the module of the caller is used.
@type namespace: L{str} (native string)
@param source: The object which is emitting events via this
logger; this is automatically set on instances of a class
if this L{Logger} is an attribute of that class.
@type source: L{object}
@param observer: The observer that this logger will send events to.
If L{None}, use the L{global log publisher <globalLogPublisher>}.
@type observer: L{ILogObserver}'

def __init__(self, namespace=None, source=None, observer=None):

    if (namespace is None):
        namespace = self._namespaceFromCallingContext()
    self.namespace = namespace
    self.source = source
    if (observer is None):
        from ._global import globalLogPublisher
        self.observer = globalLogPublisher
    else:
        self.observer = observer
