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

jul-to-slf4j inconsistent message format

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 1.7.12
    • Fix Version/s: 1.7.13
    • Component/s: jul-to-slf4j
    • Labels:
    • Environment:

      Windows 7

    • Severity:
      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

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

              Dates

              • Created:
                Updated:
                Resolved: