public function log(LoggerLevel $level, $message, $throwable = null) {
		if($this->isEnabledFor($level)) {
			$event = new LoggerLoggingEvent($this->fqcn, $this, $level, $message, null, $throwable);
			$this->callAppenders($event);
		}
		
		// Forward the event upstream if additivity is turned on
		if(isset($this->parent) && $this->getAdditivity()) {
			
			// Use the event if already created
			if (isset($event)) {
				$this->parent->logEvent($event);
			} else {
				$this->parent->log($level, $message, $throwable);
			}
		}
	}
public function log(LoggerLevel $level, $message, $throwable = null) {
		if($this->isEnabledFor($level)) {
			$event = new LoggerLoggingEvent($this->fqcn, $this, $level, $message, null, $throwable);
			$this->callAppenders($event);
		}
		
		// Forward the event upstream if additivity is turned on
		if(isset($this->parent) && $this->getAdditivity()) {
			
			// Use the event if already created
			if (isset($event)) {
				$this->parent->logEvent($event);
			} else {
				$this->parent->log($level, $message, $throwable);
			}
		}
	}
public function log ( LoggerLevel $ level , $ message , $ throwable = null ) { if ( $ this -> isEnabledFor ( $ level ) ) { $ event = new LoggerLoggingEvent ( $ this -> fqcn , $ this , $ level , $ message , null , $ throwable ) ; $ this -> callAppenders ( $ event ) ; } // Forward the event upstream if additivity is turned on
 if ( isset ( $ this -> parent ) && $ this -> getAdditivity ( ) ) { // Use the event if already created
 if ( isset ( $ event ) ) { $ this -> parent -> logEvent ( $ event ) ; } else { $ this -> parent -> log ( $ level , $ message , $ throwable ) ; } } }
Log a message using the provided logging level.

@param LoggerLevel $level The logging level.
@param mixed $message Message to log.
@param Exception $throwable Optional throwable information to include
in the logging event.
Log a message using the provided logging level .