Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8150021

Add overloaded Logger#log(String msg)

XMLWordPrintable

      A DESCRIPTION OF THE REQUEST :
      I would like to be provided `Logger#log(String msg)`, which should forward to `#log(Level, String)` and use as level what is returned by Logger#getLevel.
      As simple as the following:

      ```
          public void log(String msg) {
              log(this.levelObject, msg);
          }
      ```

      JUSTIFICATION :
      In order not to have to store the level in the state of a client object, when the level is supposed to be always the same.

      My use case is the following:

      ```
      public class WebElementLogger extends WebElementDecorator {

          protected final Logger logger;
          protected final Level logLevel;

          public WebElementLogger(WebElement element, Level logLevel) {
              super(element);
              this.logLevel = logLevel;
              this.logger = Logger.getLogger(element.getClass().getName());
              this.logger.setLevel(logLevel);
          }

          @Override
          public void click() {
              logger.log(logLevel, String.format("click %s", element));
              super.click();
          }

          @Override
          public void submit() {
              logger.log(logLevel, String.format("submit %s", element));
              super.submit();
          }
      ```

      WebElementLogger can be configured with a Level, and then it is supposed to log every operation with the same level, which is not known a priori.
      Currently I am forced to save the level in a field (to avoid calling getLevel every time), and then to pass it to every call to #log.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      I should be able to write the following instead:


      ```
      public class WebElementLogger extends WebElementDecorator {

          protected final Logger logger;

          public WebElementLogger(WebElement element, Level logLevel) {
              super(element);
              this.logger = Logger.getLogger(element.getClass().getName());
              this.logger.setLevel(logLevel);
          }

          @Override
          public void click() {
              logger.log(String.format("click %s", element));
              super.click();
          }

          @Override
          public void submit() {
              logger.log(String.format("submit %s", element));
              super.submit();
          }
      ```

            Unassigned Unassigned
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: