logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LOG4J2-1842) Expand SystemPropertiesLookup syntax
Date Thu, 09 Mar 2017 18:21:38 GMT

    [ https://issues.apache.org/jira/browse/LOG4J2-1842?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15903549#comment-15903549
] 

ASF GitHub Bot commented on LOG4J2-1842:
----------------------------------------

GitHub user mihhail-lapushkin opened a pull request:

    https://github.com/apache/logging-log4j2/pull/64

    [LOG4J2-1842] Expand SystemPropertiesLookup syntax

    The table in **Property Substitution** needs to be updated:
    https://logging.apache.org/log4j/2.x/manual/configuration.html
    
    Next to **sys** change the contents of **Context** column to:
    > System properties. Can be either a simple property key for <a class="javadoc"
href="http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#getProperty(java.lang.String)">System.getProperty(key)</a>
or a series of pipe-separated property keys followed by a default value <tt>key<sub>1</sub>|key<sub>2</sub>|...|key<sub>n</sub>|defaultValue</tt>.
Either the first existing property or the default value is used.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/mihhail-lapushkin/logging-log4j2 master

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/logging-log4j2/pull/64.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #64
    
----
commit 6998bb8882c749d9ace1a86429836431910e9e21
Author: Mihhail Lapushkin <miha@mihhails-mbp.lan>
Date:   2017-03-09T18:08:13Z

    [LOG4J2-1842] Expand SystemPropertiesLookup syntax:
    - Implemented the proposal
    - Refactored test and added new test cases

----


> Expand SystemPropertiesLookup syntax
> ------------------------------------
>
>                 Key: LOG4J2-1842
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1842
>             Project: Log4j 2
>          Issue Type: Improvement
>          Components: Lookups
>            Reporter: Mihhail Lapushkin
>            Priority: Minor
>
> I've been using a modified version of {{SystemPropertiesLookup}} in my project. Maybe
it could be part of the library.
> The idea is to allow a series of property keys to be specified. If one of the properties
is present, then it is used. If none are present, then the default value is used. For example:
> {code}
> <Logger name="com.myapp.dao" level="${sys:myapp.log.level|myapp.log.level.dao|warn}"/>
> <Logger name="com.myapp.service" level="${sys:myapp.log.level|myapp.log.level.service|warn}"/>
> <Logger name="com.myapp.controller" level="${sys:myapp.log.level|myapp.log.level.controller|warn}"/>
> {code}
> This allows me to quickly rerun the app with different log levels without fiddling with
the configuration file or JConsole. Defaults represent production settings, so that nothing
extra needs to be specified to run the app.
> This work nice in other places as well:
> {code}
> <PatternLayout disableAnsi="${sys:myapp.log.nocolor|true}">
> {code}
> Disables colors by default (for production build), but leaves an easy way to turn them
on for development.
> When no pipes are present in the expression, then the standard property lookup is used,
so the change is backwards-compatible.
> Can be a separate lookup if needed.
> Here is the possible implementation:
> {code}
> @Plugin(name = "sys", category = StrLookup.CATEGORY)
> public class SystemPropertiesLookup extends AbstractLookup {
>     private static final Logger LOGGER = StatusLogger.getLogger();
>     private static final Marker LOOKUP = MarkerManager.getMarker("LOOKUP");
>     /**
>      * @param event The current LogEvent.
>      * @param expression the expression to be looked up.
>      * @return The value resolved by expression.
>      */
>     @Override
>     public String lookup(final LogEvent event, final String expression) {
>         try {
>             if (expression.indexOf('|') < 0) {
>                 return System.getProperty(expression);
>             }
>             String[] expressionElements = expression.split("\\|");
>             for (int i = 0; i < expressionElements.length - 1; i++) {
>                 String propertyValue = System.getProperty(expressionElements[i]);
>                 if (propertyValue != null) {
>                     return propertyValue;
>                 }
>             }
>             return expressionElements[expressionElements.length - 1];
>         } catch (final Exception ex) {
>             LOGGER.warn(LOOKUP, "Error while resolving system property by expression
[{}].", expression, ex);
>             return null;
>         }
>     }
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org


Mime
View raw message