<html><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue-Light, Helvetica Neue Light, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px"><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr">I'm working on a custom layout to mask sensitive information in our production logs.</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr"><br></div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr">One of the key features is to use regular expressions - so i need the syntax of logback.xml to support the special characters in regex - including $.</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr"><br></div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr">I have searched high and low with google - and read the source a bit.  but it looks like there is no mechanism to escape this character.</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr"><br></div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr">Here is a fragment of my config file: </div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr"><br></div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr">...</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style="">       <layout class="log.PIIFilterLayout"></div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style="">          <pattern>:%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1} - %msg %n</pattern></div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style="">          <!-- adhoc patterns --><br></div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style="">          <regex>mdn='(.+)'</regex></div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style="">          <regex>accountName=(.+)$</regex></div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style="">...</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><br></div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style="">I have tried: </div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style="">  - $</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style="">  - \$</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style="">  - \\$</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style="">  - <span style="font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; white-space: inherit; font-size: 14px; line-height: 17.8048000335693px; background-color: transparent;" class="">&#36;</span></div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""> </div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style="">No matter what - i get this: </div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><br></div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style="">Failed to instantiate [ch.qos.logback.classic.LoggerContext]</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style="">Reported exception:</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style="">java.lang.IllegalArgumentException: Failed to parse input [accountName=(.+)\\$]</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre">    </span>at ch.qos.logback.core.util.OptionHelper.substVars(OptionHelper.java:119)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre">       </span>at ch.qos.logback.core.joran.spi.InterpretationContext.subst(InterpretationContext.java:159)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre">    </span>at ch.qos.logback.core.joran.action.NestedBasicPropertyIA.body(NestedBasicPropertyIA.java:87)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre">   </span>at ch.qos.logback.core.joran.spi.Interpreter.callBodyAction(Interpreter.java:295)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre">       </span>at ch.qos.logback.core.joran.spi.Interpreter.characters(Interpreter.java:175)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre">   </span>at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:57)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre">  </span>at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:149)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre">      </span>at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:135)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre">      </span>at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:99)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre">       </span>at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:49)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre">       </span>at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre">       </span>at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:150)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre">       </span>at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre">   </span>at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre"> </span>at org.slf4j.LoggerFactory.bind(LoggerFactory.java:129)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre"> </span>at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:108)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre">        </span>at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:302)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre">    </span>at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:276)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre">    </span>at util.LogFactory.getLogger(LogFactory.java:27)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><span class="" style="white-space:pre">        </span>at log.PIITest.<clinit>(PIITest.java:20)</div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style="">Caused by: ch.qos.logback.core.spi.ScanException: Unexpected end of pattern string</div><div class="" style="" id="yui_3_16_0_1_1418338286227_119389"><br class="" style=""></div><div class="" style="" id="yui_3_16_0_1_1418338286227_119389"><br></div><div class="" style="" id="yui_3_16_0_1_1418338286227_119389" dir="ltr">How can i escape $ in logback.xml?</div><div class="" style="" id="yui_3_16_0_1_1418338286227_119389" dir="ltr"><br></div><div class="" style="" id="yui_3_16_0_1_1418338286227_119389" dir="ltr">Paul</div><div class="" style="" id="yui_3_16_0_1_1418338286227_119389" dir="ltr"><br></div><div id="yui_3_16_0_1_1418338286227_118712" dir="ltr" class="" style=""><br class="" style=""></div></div></body></html>