logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Remko Popma (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (LOG4J2-1297) Document "gc-free" configuration and performance
Date Tue, 23 Feb 2016 14:40:18 GMT

     [ https://issues.apache.org/jira/browse/LOG4J2-1297?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Remko Popma updated LOG4J2-1297:
--------------------------------
    Description: 
Update the site with a description of which configurations are GC-free (i.e., that don't create
temporary objects in steady running state).

Currently that means
* Loggers are all asynchronous (Log4jContextSelector is set to org.apache.logging.log4j.core.async.AsyncLoggerContextSelector)
* the configuration does not contain a <Properties> section
* the "steady-state" appenders are either RandomAccessFile or RollingRandomAccessFile Appenders
(logging to any other appender will cause temporary objects to be created - including ConsoleAppender)
* the Layout is a PatternLayout that uses one of the pre-defined date formats, does not have
any regular expression replacements, and does not have lookups (TODO: may need to restrict
this further)
* in user code, when logging a parameterized message, the number of parameters is no more
than ... (TBD pending discussion in LOG4J2-1278)
* in user code, when logging a parameterized message, parameters of primitive type are boxed
in a reused StringBuilder (Log4j provides a utility to make this relatively painless)

Furthermore, we need to explain that some of this functionality depends on ThreadLocals and
so is disabled by default in web applications to prevent memory leaks. The page should also
explain how to manually switch off the use of ThreadLocals.

Finally, the page should show a performance test comparison similar to the [performance section|http://logging.apache.org/log4j/2.x/manual/async.html#Performance]
on the Async Loggers page. I'm thinking a comparison between Logback, Log4j-1, Log4j-2.0,
Log4j-2.6 "classic" and Log4j-2.6 "gc-free" would be ideal.

  was:
Update the site with a description of which configurations are GC-free (i.e., that don't create
temporary objects in steady running state).

Currently that means
* Loggers are all asynchronous (Log4jContextSelector is set to org.apache.logging.log4j.core.async.AsyncLoggerContextSelector)
* the configuration does not contain a <Properties> section
* the "steady-state" appenders are either RandomAccessFile or RollingRandomAccessFile Appenders
(logging to any other appender will cause temporary objects to be created - including ConsoleAppender)
* the Layout is a PatternLayout that uses one of the pre-defined date formats, does not have
any regular expression replacements, and does not have lookups (TODO: may need to restrict
this further)

Furthermore, we need to explain that some of this functionality depends on ThreadLocals and
so is disabled by default in web applications to prevent memory leaks. The page should also
explain how to manually switch off the use of ThreadLocals.

Finally, the page should show a performance test comparison similar to the [performance section|http://logging.apache.org/log4j/2.x/manual/async.html#Performance]
on the Async Loggers page. I'm thinking a comparison between Logback, Log4j-1, Log4j-2.0,
Log4j-2.6 "classic" and Log4j-2.6 "gc-free" would be ideal.


> Document "gc-free" configuration and performance
> ------------------------------------------------
>
>                 Key: LOG4J2-1297
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1297
>             Project: Log4j 2
>          Issue Type: New Feature
>          Components: Documentation
>    Affects Versions: 2.5
>            Reporter: Remko Popma
>            Assignee: Remko Popma
>
> Update the site with a description of which configurations are GC-free (i.e., that don't
create temporary objects in steady running state).
> Currently that means
> * Loggers are all asynchronous (Log4jContextSelector is set to org.apache.logging.log4j.core.async.AsyncLoggerContextSelector)
> * the configuration does not contain a <Properties> section
> * the "steady-state" appenders are either RandomAccessFile or RollingRandomAccessFile
Appenders (logging to any other appender will cause temporary objects to be created - including
ConsoleAppender)
> * the Layout is a PatternLayout that uses one of the pre-defined date formats, does not
have any regular expression replacements, and does not have lookups (TODO: may need to restrict
this further)
> * in user code, when logging a parameterized message, the number of parameters is no
more than ... (TBD pending discussion in LOG4J2-1278)
> * in user code, when logging a parameterized message, parameters of primitive type are
boxed in a reused StringBuilder (Log4j provides a utility to make this relatively painless)
> Furthermore, we need to explain that some of this functionality depends on ThreadLocals
and so is disabled by default in web applications to prevent memory leaks. The page should
also explain how to manually switch off the use of ThreadLocals.
> Finally, the page should show a performance test comparison similar to the [performance
section|http://logging.apache.org/log4j/2.x/manual/async.html#Performance] on the Async Loggers
page. I'm thinking a comparison between Logback, Log4j-1, Log4j-2.0, Log4j-2.6 "classic" and
Log4j-2.6 "gc-free" would be ideal.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
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