pier        2004/05/06 13:09:33

  Modified:    src/kernel/org/apache/cocoon/kernel BlockLoader.java
                        DeployedWirings.java Installer.java
                        KernelDeployer.java ProxyWire.java
               src/kernel/org/apache/cocoon/kernel/composition
                        AbstractComposer.java Component.java Composer.java
                        Lifecycle.java WiringsWrapper.java
               src/kernel/org/apache/cocoon/kernel/configuration
                        Configurable.java
               src/kernel/org/apache/cocoon/kernel/startup
                        AbstractLogger.java KernelLoader.java
                        KernelServlet.java
  Added:       src/kernel/org/apache/cocoon/kernel/composition
                        AbstractComponent.java
               src/kernel/org/apache/cocoon/kernel/logging Logger.java
                        Logging.java
  Removed:     src/kernel/org/apache/cocoon/kernel/startup Logger.java
  Log:
  Adding logging in core: this Logger (as pointed out by the javadoc) should
  be used when a logger is not available (example, initializing a logging
  block). Maybe the "Logging" interface should be deprecated to start with.
  
  Revision  Changes    Path
  1.7       +0 -0      
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/BlockLoader.java
  
  Index: BlockLoader.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.2/src/kernel/org/apache/cocoon/kernel/BlockLoader.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  
  
  
  1.9       +18 -6     
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/DeployedWirings.java
  
  Index: DeployedWirings.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.2/src/kernel/org/apache/cocoon/kernel/DeployedWirings.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- DeployedWirings.java      6 May 2004 19:14:09 -0000       1.8
  +++ DeployedWirings.java      6 May 2004 20:09:32 -0000       1.9
  @@ -26,10 +26,13 @@
   import org.apache.cocoon.kernel.composition.Wire;
   import org.apache.cocoon.kernel.composition.WiringException;
   import org.apache.cocoon.kernel.composition.Wirings;
  +import org.apache.cocoon.kernel.composition.WiringsWrapper;
   import org.apache.cocoon.kernel.deployment.DeploymentException;
   import org.apache.cocoon.kernel.deployment.Instance;
   import org.apache.cocoon.kernel.identification.BlockDescriptor;
   import org.apache.cocoon.kernel.identification.Descriptor;
  +import org.apache.cocoon.kernel.logging.Logger;
  +import org.apache.cocoon.kernel.logging.Logging;
   import org.apache.cocoon.kernel.resolution.CompoundResolver;
   import org.apache.cocoon.kernel.resolution.Resolver;
   import org.apache.cocoon.kernel.resolution.Resource;
  @@ -58,6 +61,9 @@
       
       /** <p>The [EMAIL PROTECTED] Resolver} for resources accessible by wired 
blocks.</p> */
       private CompoundResolver pubresolver = new CompoundResolver();
  +    
  +    /** <p>The [EMAIL PROTECTED] Logger} instance to provide to new 
instances.</p> */
  +    private Logger logger = new Logger();
   
       /* 
====================================================================== */
   
  @@ -70,13 +76,13 @@
        * @param deployer the [EMAIL PROTECTED] KernelDeployer} deploying this 
instance.
        * @throws DeploymentException if this instance can not be created.
        */
  -    public DeployedWirings(DeployableInstance instance, KernelDeployer 
deployer)
  +    public DeployedWirings(DeployableInstance i, KernelDeployer d, Logger l)
       throws DeploymentException {
  -        this.instance = instance;
  -        this.deployer = deployer;
  +        this.instance = i;
  +        this.deployer = d;
   
           /* Retrieve all we need from our instance regarding composers */
  -        LoadedBlock block = (LoadedBlock) instance.block();
  +        LoadedBlock block = (LoadedBlock) i.block();
           BlockDescriptor descriptor = (BlockDescriptor) block.descriptor();
           String composer = descriptor.providedComposer();
           String component = descriptor.providedClass();
  @@ -102,6 +108,9 @@
               } else {
                   this.composer = (Composer) clazz.newInstance();
               }
  +            if (this.composer instanceof Logging) {
  +                ((Logging)this.composer).logger(this.logger);
  +            }
           } catch (Throwable t) {
               if (t instanceof InvocationTargetException)
                   if (t.getCause() != null) t = t.getCause();
  @@ -109,7 +118,7 @@
               else composer = "composer  class \"" + composer + "\"";
               throw new DeploymentException("Cannot create " + composer
                                             + " instance for block \""
  -                                          + instance + "\"", t);
  +                                          + i + "\"", t);
           }
   
           /* Allocate the table of resource prefixes against wiring names */
  @@ -159,7 +168,10 @@
           if (this.composer == null) {
               throw new WiringException("Block does not provide components");
           }
  -        return(new ProxyWire(this.composer, role, this, resolver).getWire());
  +        WiringsWrapper wrapper = new WiringsWrapper(this);
  +        ProxyWire wire = new ProxyWire(this.composer, role, wrapper, 
resolver,
  +                                       this.logger);
  +        return((wire).getWire());
       }
   
       /* 
====================================================================== */
  
  
  
  1.7       +0 -0      
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/Installer.java
  
  Index: Installer.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.2/src/kernel/org/apache/cocoon/kernel/Installer.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  
  
  
  1.10      +4 -3      
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/KernelDeployer.java
  
  Index: KernelDeployer.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.2/src/kernel/org/apache/cocoon/kernel/KernelDeployer.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- KernelDeployer.java       6 May 2004 19:14:09 -0000       1.9
  +++ KernelDeployer.java       6 May 2004 20:09:32 -0000       1.10
  @@ -35,7 +35,8 @@
   import org.apache.cocoon.kernel.identification.DescriptorBuilder;
   import org.apache.cocoon.kernel.identification.IdentificationException;
   import org.apache.cocoon.kernel.identification.Identifier;
  -import org.apache.cocoon.kernel.startup.Logger;
  +import org.apache.cocoon.kernel.logging.Logger;
  +import org.apache.cocoon.kernel.logging.Logging;
   
   /**
    * <p>A [EMAIL PROTECTED] KernelDeployer} is a simple implementation of the 
[EMAIL PROTECTED] Deployer}
  @@ -44,7 +45,7 @@
    * @author <a href="mailto:[EMAIL PROTECTED]">Pier Fumagalli</a>
    * @version 1.0 (CVS $Revision$)
    */
  -public class KernelDeployer implements Deployer {
  +public class KernelDeployer implements Deployer, Logging {
   
       /** <p>The XML configuration namespace.</p> */
       public static final String NAMESPACE = 
  @@ -250,7 +251,7 @@
           }
   
           /* Deploy the sucker (finally) */
  -        DeployedWirings deployed = new DeployedWirings(deployable, this);
  +        DeployedWirings deployed = new DeployedWirings(deployable, this, 
log);
           try {
               deployed.init();
           } catch (Throwable t) {
  
  
  
  1.9       +14 -9     
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/ProxyWire.java
  
  Index: ProxyWire.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.2/src/kernel/org/apache/cocoon/kernel/ProxyWire.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ProxyWire.java    6 May 2004 19:14:09 -0000       1.8
  +++ ProxyWire.java    6 May 2004 20:09:32 -0000       1.9
  @@ -25,6 +25,8 @@
   import org.apache.cocoon.kernel.composition.Wire;
   import org.apache.cocoon.kernel.composition.WiringException;
   import org.apache.cocoon.kernel.composition.Wirings;
  +import org.apache.cocoon.kernel.logging.Logger;
  +import org.apache.cocoon.kernel.logging.Logging;
   import org.apache.cocoon.kernel.resolution.Resolver;
   
   /**
  @@ -92,7 +94,7 @@
        * the interface role specified in this constructor, and all the 
interfaces
        * implemented by the original object.</p>
        *
  -     * @param composer the [EMAIL PROTECTED] Composer} where acquisition, 
release and/or
  +     * @param c the [EMAIL PROTECTED] Composer} where acquisition, release 
and/or
        *                 disposal of proxied component instances will occur.
        * @param role an interface [EMAIL PROTECTED] Class} to which the [EMAIL 
PROTECTED] Wire}
        *             returned by [EMAIL PROTECTED] #getWire()} <b>must</b> be 
castable to.
  @@ -100,15 +102,17 @@
        *          where the proxied component is deployed.
        * @param r The [EMAIL PROTECTED] Resolver} providing resolution in the 
context of the
        *          block instance requesting the component instance.
  +     * @param l The [EMAIL PROTECTED] Logger} to provide to the component if 
it implements
  +     *          the [EMAIL PROTECTED] Logging} interface.
        * @throws WiringException if an error occurred acquiring the original
        *                              object or creating the [EMAIL PROTECTED] 
Wire}.
        * @throws NullPointerException if any of the parameters were 
<b>null</b>.
        */
  -    public ProxyWire(Composer composer, Class role, Wirings w, Resolver r)
  +    public ProxyWire(Composer c, Class role, Wirings w, Resolver r, Logger l)
       throws WiringException {
           ProxyWire.initialize();
   
  -        ClassLoader loader = composer.getClass().getClassLoader();
  +        ClassLoader loader = c.getClass().getClassLoader();
   
           /* Check that the requested role is actually an interface */
           if (!role.isInterface()) {
  @@ -125,14 +129,15 @@
           /* Acquire and check that the instance implements the given role */
           Object instance = null;
           try {
  -            instance = composer.acquire();
  +            instance = c.acquire();
  +            if (instance instanceof Logging) ((Logging)instance).logger(l);
           } catch (Throwable t) {
               throw new WiringException("Unable to acquire component", t);
           }
   
           if (!role.isAssignableFrom(instance.getClass())) {
               /* Remember to release components with wrong interfaces */
  -            composer.release(instance);
  +            c.release(instance);
               throw new WiringException("Acquired object instance \""
                                         + instance.getClass().getName()
                                         + "\" does not implement the "
  @@ -142,8 +147,8 @@
   
           try {
               /* Create the proxy instance */
  -            Class c[] = new Class[] { Wire.class, role };
  -            this.wire = (Wire)Proxy.newProxyInstance(loader, c, this);
  +            Class classes[] = new Class[] { Wire.class, role };
  +            this.wire = (Wire)Proxy.newProxyInstance(loader, classes, this);
   
               /* Contextualize the instance with the wire */
               if (instance instanceof Component) {
  @@ -151,11 +156,11 @@
               }
   
               /* Record the original composer and instance */
  -            this.composer = composer;
  +            this.composer = c;
               this.instance = instance;
           } catch (Throwable t) {
               /* Something bad happened releasing, release the instance */
  -            composer.release(instance);
  +            c.release(instance);
               throw new WiringException("Unable to create wrapper for "
                                         + "composed component instance", t);
           }
  
  
  
  1.2       +2 -3      
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/composition/AbstractComposer.java
  
  Index: AbstractComposer.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.2/src/kernel/org/apache/cocoon/kernel/composition/AbstractComposer.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractComposer.java     6 May 2004 19:14:09 -0000       1.1
  +++ AbstractComposer.java     6 May 2004 20:09:33 -0000       1.2
  @@ -21,13 +21,12 @@
   /**
    * <p>An abstract implementation of the [EMAIL PROTECTED] Composer} 
interface.</p> 
    *
  - *
    * @author <a href="mailto:[EMAIL PROTECTED]">Pier Fumagalli</a>
    * @version 1.0 (CVS $Revision$)
    */
   public abstract class AbstractComposer implements Composer {
   
  -    /** <p>The [EMAIL PROTECTED] Wirings} instance contextualized in this 
instance.</p> */
  +     /** <p>The [EMAIL PROTECTED] Wirings} instance contextualized in this 
instance.</p> */
       protected Wirings wirings = null;
   
       /** <p>The [EMAIL PROTECTED] Parameters} instance configured in this 
instance.</p> */
  @@ -66,7 +65,7 @@
        * <p>Configure this instance and store the supplied [EMAIL PROTECTED] 
Parameters}
        * instance.</p>
        * 
  -     * <p>The configure [EMAIL PROTECTED] Parameters} instance will be 
available in the
  +     * <p>The configured [EMAIL PROTECTED] Parameters} instance will be 
available in the
        * protected [EMAIL PROTECTED] #parameters} field.</p>
        * 
        * @param parameters the [EMAIL PROTECTED] Parameters} configuring this 
instance.
  
  
  
  1.6       +0 -0      
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/composition/Component.java
  
  Index: Component.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.2/src/kernel/org/apache/cocoon/kernel/composition/Component.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  
  
  
  1.5       +0 -0      
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/composition/Composer.java
  
  Index: Composer.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.2/src/kernel/org/apache/cocoon/kernel/composition/Composer.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  
  
  
  1.5       +0 -0      
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/composition/Lifecycle.java
  
  Index: Lifecycle.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.2/src/kernel/org/apache/cocoon/kernel/composition/Lifecycle.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  
  
  
  1.2       +0 -0      
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/composition/WiringsWrapper.java
  
  Index: WiringsWrapper.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.2/src/kernel/org/apache/cocoon/kernel/composition/WiringsWrapper.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  
  
  
  1.1                  
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/composition/AbstractComponent.java
  
  Index: AbstractComponent.java
  ===================================================================
  /* ========================================================================== 
*
   * Copyright (C) 1996-2004 VNU Business Publications LTD. All rights reserved 
*
   * ========================================================================== 
*/
  package org.apache.cocoon.kernel.composition;
  
  import org.apache.cocoon.kernel.resolution.Resolver;
  
  
  /**
   * <p></p> 
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Pier Fumagalli</a>
   * @version 1.0 (CVS $Revision: 1.1 $)
   */
  public class AbstractComponent implements Component {
   
      /** <p>The [EMAIL PROTECTED] Wire} instance contextualized in this 
instance.</p> */
      protected Wire wire = null;
  
      /** <p>The [EMAIL PROTECTED] Resolver} instance contextualized in this 
instance.</p> */
      protected Resolver resolver = null;
  
      /**
       * <p>Create a new [EMAIL PROTECTED] AbstractComposer} instance.</p>
       */
      public AbstractComponent() {
          super();
      }
  
      /**
       * <p>Contextualize this [EMAIL PROTECTED] Component} instance.</p>
       *
       * <p>The contextualized [EMAIL PROTECTED] Wire} and [EMAIL PROTECTED] 
Resolver} instances will
       * be available in the [EMAIL PROTECTED] #wire} and [EMAIL PROTECTED] 
#resolver} fields
       * respectively.</p>
       *
       * @param wire the [EMAIL PROTECTED] Wire} instance through which the 
block requesting
       *             this instance is accessing it.
       * @param resolver the [EMAIL PROTECTED] Resolver} instance resolving 
resources in the
       *                 calling block instance.
       */
      public void contextualize(Wire wire, Resolver resolver) {
          this.resolver = resolver;
          this.wire = wire;
      }
  }
  
  
  
  1.5       +0 -0      
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/configuration/Configurable.java
  
  Index: Configurable.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.2/src/kernel/org/apache/cocoon/kernel/configuration/Configurable.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  
  
  
  1.1                  
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/logging/Logger.java
  
  Index: Logger.java
  ===================================================================
  /*
   * Copyright 1999-2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.cocoon.kernel.logging;
  
  /**
   * <p>The [EMAIL PROTECTED] Logger} represents the root class for all core 
loggers of
   * the framework.</p>
   *
   * <p>This implementation never logs.</p>
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Pier Fumagalli</a>
   * @version 1.0 (CVS $Revision: 1.1 $)
   */
  public class Logger {
  
      /**
       * <p>Create a new [EMAIL PROTECTED] Logger}.</p>
       */
      public Logger() {
          super();
      }
      
      /**
       * <p>Log a debug message.</p>
       *
       * @param message the message.
       */
      public void debug(String message) {
      }
      
      /**
       * <p>Log a debug message.</p>
       *
       * @param message the message.
       * @param throwable the throwable.
       */
      public void debug(String message, Throwable throwable) {
      }
      
      /**
       * <p>Log a info message.</p>
       *
       * @param message the message.
       */
      public void info(String message) {
      }
      
      /**
       * <p>Log a info message.</p>
       *
       * @param message the message.
       * @param throwable the throwable.
       */
      public void info(String message, Throwable throwable) {
      }
     
      /**
       * <p>Log a warn message.</p>
       *
       * @param message the message.
       */
      public void warn(String message) {
      }
      
      /**
       * <p>Log a warn message.</p>
       *
       * @param message the message.
       * @param throwable the throwable.
       */
      public void warn(String message, Throwable throwable) {
      }
      
      /**
       * <p>Log an error message.</p>
       *
       * @param message the message.
       */
      public void error(String message) {
      }
      
      /**
       * <p>Log a error message.</p>
       *
       * @param message the message.
       * @param throwable the throwable.
       */
      public void error(String message, Throwable throwable) {
      }
      
      /**
       * <p>Log a fatal error message.</p>
       *
       * @param message the message.
       */
      public void fatal(String message) {
      }
      
      /**
       * <p>Log a fatal error message.</p>
       *
       * @param message the message.
       * @param throwable the throwable.
       */
      public void fatal(String message, Throwable throwable) {
      }
  }
  
  
  
  1.1                  
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/logging/Logging.java
  
  Index: Logging.java
  ===================================================================
  /*
   * Copyright 1999-2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.cocoon.kernel.logging;
  
  
  /**
   * <p>The [EMAIL PROTECTED] Logging} interface marks a component requiring to 
log through
   * the core kernel logging facility.</p>
   *
   * <p>Instead of relying on this interface, blocks should define their logging
   * requirements in their deployment descriptor (as with any other required
   * block) but in some cases the core loggers might be required (for example,
   * during the initialization of a block providing loggers).</p>
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Pier Fumagalli</a>
   * @version 1.0 (CVS $Revision: 1.1 $)
   */
  public interface Logging {
  
      /**
       * <p>Setup the [EMAIL PROTECTED] Logger} instance this component can use 
to
       * perform logging operations.</p>
       *
       * @param logger a <b>non null</b> [EMAIL PROTECTED] Logger} instance.
       */
      public void logger(Logger logger);
  
  }
  
  
  
  1.8       +2 -1      
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/startup/AbstractLogger.java
  
  Index: AbstractLogger.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.2/src/kernel/org/apache/cocoon/kernel/startup/AbstractLogger.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- AbstractLogger.java       6 May 2004 08:43:18 -0000       1.7
  +++ AbstractLogger.java       6 May 2004 20:09:33 -0000       1.8
  @@ -21,6 +21,7 @@
   import javax.servlet.ServletException;
   import javax.xml.transform.TransformerException;
   
  +import org.apache.cocoon.kernel.logging.Logger;
   import org.xml.sax.SAXException;
   
   /**
  
  
  
  1.2       +2 -2      
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/startup/KernelLoader.java
  
  Index: KernelLoader.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.2/src/kernel/org/apache/cocoon/kernel/startup/KernelLoader.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- KernelLoader.java 4 May 2004 17:38:53 -0000       1.1
  +++ KernelLoader.java 6 May 2004 20:09:33 -0000       1.2
  @@ -34,7 +34,7 @@
           }
   
           /* Create a logger for startup operations */
  -        Logger logger = new ConsoleLogger();
  +        ConsoleLogger logger = new ConsoleLogger();
   
           try {
               /* Now let's create our core deployer */
  
  
  
  1.4       +2 -2      
cocoon-2.2/src/kernel/org/apache/cocoon/kernel/startup/KernelServlet.java
  
  Index: KernelServlet.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.2/src/kernel/org/apache/cocoon/kernel/startup/KernelServlet.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- KernelServlet.java        6 May 2004 19:14:09 -0000       1.3
  +++ KernelServlet.java        6 May 2004 20:09:33 -0000       1.4
  @@ -42,7 +42,7 @@
   
       protected static KernelServlet instance = null;
   
  -    private Logger logger = null;
  +    private ServletLogger logger = null;
       private Wirings wirings = null;
       private ServletConfig config = null;
       private KernelDeployer deployer = null;
  @@ -146,7 +146,7 @@
           return("Apache Cocoon Kernel Servlet");
       }
       
  -    public Logger getLogger() {
  +    public ServletLogger getLogger() {
           return(this.logger);
       }
   
  
  
  

Reply via email to