Uploaded image for project: 'SLF4J'
  1. SLF4J
  2. SLF4J-337

jul-to-slf4j inconsistent message format

    XMLWordPrintable

Details

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Critical Critical
    • 1.7.13
    • 1.7.12
    • jul-to-slf4j
    • Windows 7

    • major

    Description

      If you try executing the following code with jul-to-slf4j you get a NumberFormatException, whereas with java.util.logging you get a normal logged message.
      I.e.:
      Logger.getLogger("test").log(Level.INFO, "abcd

      {18=false} {0}", "test");

      Result with java.util.logging:
      Nov 06, 2015 12:42:03 PM Main main
      INFORMAÇÕES: abcd {18=false}

      {0}

      Result with jul-to-slf4j:
      java.lang.IllegalArgumentException: can't parse argument number: 18=false
      at java.text.MessageFormat.makeFormat(MessageFormat.java:1420)
      at java.text.MessageFormat.applyPattern(MessageFormat.java:479)
      at java.text.MessageFormat.<init>(MessageFormat.java:363)
      at java.text.MessageFormat.format(MessageFormat.java:835)
      at org.slf4j.bridge.SLF4JBridgeHandler.getMessageI18N(SLF4JBridgeHandler.java:264)
      at org.slf4j.bridge.SLF4JBridgeHandler.callLocationAwareLogger(SLF4JBridgeHandler.java:220)
      at org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:297)
      at java.util.logging.Logger.log(Logger.java:616)
      at java.util.logging.Logger.doLog(Logger.java:641)
      at java.util.logging.Logger.log(Logger.java:685)
      at java.lang.Integer.parseInt(Integer.java:492)
      at java.lang.Integer.parseInt(Integer.java:527)
      at java.text.MessageFormat.makeFormat(MessageFormat.java:1418)
      at java.text.MessageFormat.applyPattern(MessageFormat.java:479)
      at java.text.MessageFormat.<init>(MessageFormat.java:363)
      at java.text.MessageFormat.format(MessageFormat.java:835)
      at org.slf4j.bridge.SLF4JBridgeHandler.getMessageI18N(SLF4JBridgeHandler.java:264)
      at org.slf4j.bridge.SLF4JBridgeHandler.callLocationAwareLogger(SLF4JBridgeHandler.java:220)
      at org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:297)

      org/slf4j/bridge/SLF4JBridgeHandler.java:140 Seems to use MessageFormat directly to parse parameters. But java.util.logging uses java.util.logging.SimpleFormatter for a different handling of parameters.

      Attachments

        Activity

          People

            ceki Ceki Gülcü
            rodolfoul Rodolfo Udo Labsch
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: