Uploaded image for project: 'Log4j 2'
  1. Log4j 2
  2. LOG4J2-682

Special characters (tab and so on) in PatternLayout do not work

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 2.0-rc1
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None

      Description

      I upgraded a log4j 1.2 layout pattern containing "\t" to log4j 2:

         <param name="ConversionPattern" value="%{ISO8601}\t%m%n"/>
         ...becomes...
         <PatternLayout pattern="%{ISO8601}\t%m%n"/>
      

      The resulting output contained "\t" instead of the expected tab character.

      It seems the old DOMConfigurator applied OptionConverter.convertSpecialChars to the "value" attribute of every "param" element.

      We can't convert special characters quite as broadly anymore because it would break things like the "%replace" pattern. I considered various conversion points including the PatternLayout constructor, in XmlConfiguration.processAttributes, or in AbstractPluginVisitor.convert.

      In fact, PatternLayout.setConversionPattern actually did convertSpecialChars even though the constructor did not.

      It seems the best place to replace the 'special chars' is now in LiteralPatternConverter (see my patch). I added a test to PatternLayoutTest to demonstrate.

      I studied all the other plugin attributes and couldn't find any others where special characters might be useful, except perhaps the ColumnConfig "pattern" attribute, which happens to use PatternLayout so it now supports the special character escapes as well.

      Side note: PatternLayout.setConversionPattern was not storing the new value in the conversionPattern field since it was final. I've made it non-final (see patch) so we can store it there, just in case anyone ever calls getConversionPattern (not likely).

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                seh4nc Scott Harrington
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: