<style>
/* Changing the layout to use less space for mobiles */
@media screen and (max-device-width: 480px), screen and (-webkit-min-device-pixel-ratio: 2) {
#email-body { min-width: 30em !important; }
#email-page { padding: 8px !important; }
#email-banner { padding: 8px 8px 0 8px !important; }
#email-avatar { margin: 1px 8px 8px 0 !important; padding: 0 !important; }
#email-fields { padding: 0 8px 8px 8px !important; }
#email-gutter { width: 0 !important; }
}
</style>
<div id="email-body">
<table id="email-wrap" align="center" border="0" cellpadding="0" cellspacing="0" style="background-color:#f0f0f0;color:#000000;width:100%;">
<tr valign="top">
<td id="email-page" style="padding:16px !important;">
<table align="center" border="0" cellpadding="0" cellspacing="0" style="background-color:#ffffff;border:1px solid #bbbbbb;color:#000000;width:100%;">
<tr valign="top">
<td bgcolor="#003366" style="background-color:#003366;color:#ffffff;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;line-height:1;"><img src="http://jira.qos.ch/s/en_USzcg4h8-418945332/850/25/_/jira-logo-scaled.png" alt="" style="vertical-align:top;" /></td>
</tr><tr valign="top">
<td id="email-banner" style="padding:32px 32px 0 32px;">
<table align="left" border="0" cellpadding="0" cellspacing="0" width="100%" style="width:100%;">
<tr valign="top">
<td style="color:#505050;font-family:Arial,FreeSans,Helvetica,sans-serif;padding:0;">
<img id="email-avatar" src="http://jira.qos.ch/secure/useravatar?ownerId=noreply.ceki%40qos.ch&avatarId=10200" alt="" height="48" width="48" border="0" align="left" style="padding:0;margin: 0 16px 16px 0;" />
<div id="email-action" style="padding: 0 0 8px 0;font-size:12px;line-height:18px;">
<a class="user-hover" rel="noreply.ceki@qos.ch" id="email_noreply.ceki@qos.ch" href="http://jira.qos.ch/secure/ViewProfile.jspa?name=noreply.ceki%40qos.ch" style="color:#326ca6;">Ceki Gulcu</a>
commented on <img src="http://jira.qos.ch/images/icons/issuetypes/improvement.png" height="16" width="16" border="0" align="absmiddle" alt="Improvement"> <a style='color:#326ca6;text-decoration:none;' href='http://jira.qos.ch/browse/LOGBACK-833'>LOGBACK-833</a>
</div>
<div id="email-summary" style="font-size:16px;line-height:20px;padding:2px 0 16px 0;">
<a style='color:#326ca6;text-decoration:none;' href='http://jira.qos.ch/browse/LOGBACK-833'><strong>Allow SiftingAppender to define local properties</strong></a>
</div>
</td>
</tr>
</table>
</td>
</tr>
<tr valign="top">
<td id="email-fields" style="padding:0 32px 32px 32px;">
<table border="0" cellpadding="0" cellspacing="0" style="padding:0;text-align:left;width:100%;" width="100%">
<tr valign="top">
<td id="email-gutter" style="width:64px;white-space:nowrap;"></td>
<td>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td colspan="2" style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 0 16px 0;width:100%;">
<div class="comment-block" style="background-color:#edf5ff;border:1px solid #dddddd;color:#000000;padding:12px;">solution 1)<br/>
<br/>
Adding the following line into addInstanceRules() in ch.qos.logback.classic.sift.SiftingJoranConfigurator may be sufficient.<br/>
<br/>
rs.addRule(new Pattern("configuration/property"), new PropertyAction());<br/>
<br/>
This will allow writing<br/>
<br/>
<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender"><br/>
<discriminator><br/>
<key>threadId</key><br/>
<defaultValue>unclassified</defaultValue><br/>
</discriminator><br/>
<sift><br/>
<property name="LOG_HOME" value=".../><br/>
<appender name="FILE-${threadId}" class="ch.qos.logback.core.FileAppender"><br/>
<file>${LOG_HOME}/thread-${threadId}.log</file><br/>
<append>false</append><br/>
<encoder><pattern>%d - %msg%n</pattern></encoder><br/>
</appender><br/>
</sift><br/>
</appender><br/>
<br/>
The addition of this rule would also allow reading properties from files.Search for the example using variableSubstitution3.xml<br/>
in <a href="http://logback.qos.ch/manual/configuration.html#definingProps">http://logback.qos.ch/manual/configuration.html#definingProps</a><br/>
<br/>
solution 2)<br/>
<br/>
The rule above would *not* allow previously defined properties (in local scope) to be seen by SiftingJoranConfigurator. Users would be forced to define properties twice, once for SiftingAppender within SiftingAppender and once outside. I would probably better to simply inject currently defined properties into SiftingAppender so that it can inject it to its sub-components.<br/>
<br/>
SiftAction could be modifed so that it can capture the properties in local scope and inject it into the SiftingAppender it's configuring. However, the InterpretationContext which contains the local properties does not expose a method for accessing all local properties. Such a method, say getCopyOfPropertyMap(), would need to be added. InterpretationContext implements the PropertyContainer interface. The Context interface extends PropertyContainer and ContextBase which most logback context's derive from, already implements the getCopyOfPropertyMap() method. I thus reckon that it would make sense to add getCopyOfPropertyMap() to the PropertyContainer interface. <br/>
<br/>
This second solution is not significantly more complicated to implement but offers better usability.<br/>
</div>
<div style="color:#505050;padding:4px 0 0 0;"> </div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td><!-- End #email-page -->
</tr>
<tr valign="top">
<td style="color:#505050;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:10px;line-height:14px;padding: 0 16px 16px 16px;text-align:center;">
This message is automatically generated by JIRA.<br />
If you think it was sent incorrectly, please contact your JIRA administrators<br />
For more information on JIRA, see: <a style='color:#326ca6;' href='http://www.atlassian.com/software/jira'>http://www.atlassian.com/software/jira</a>
</td>
</tr>
</table><!-- End #email-wrap -->
</div><!-- End #email-body -->