Yes but if this is wrong because there is no threadpool or so, then you can
use System property "log4j2.is.webapp" to tell Log4j that it should
consider your app a non-webapp.

On Mon, Apr 18, 2016 at 10:59 PM, Matt Sicker <boa...@gmail.com> wrote:

> Would an embedded Tomcat/Jetty a la Spring Boot really be considered a web
> application?
>
> On 18 April 2016 at 08:56, Remko Popma <remko.po...@gmail.com> wrote:
>
>> When I finish performance testing I will add graphs to the Performance
>> section of the gc-free manual page so that users can make an informed
>> decision. (The below one is an example.)
>>
>> So far, it seems that even with the garbage-free logging enabled,
>> synchronous logging throughput (the green line) is usually slightly faster
>> than it was with 2.5 (the purple line). So I think making garbage-free the
>> default is acceptable. Also, users who care about logging throughput will
>> be logging asynchronously, not synchronously: this scales much better with
>> the number of application threads.
>>
>>
>>
>> ​
>>
>> On Mon, Apr 18, 2016 at 9:57 PM, Mikael Ståldal <
>> mikael.stal...@magine.com> wrote:
>>
>>> Is it wise to enable by default given that "multi-threaded applications
>>> that use synchronous logging may see worse performance"?
>>>
>>> On Mon, Apr 18, 2016 at 2:22 PM, Remko Popma <remko.po...@gmail.com>
>>> wrote:
>>>
>>>> Enabled, except for web apps; for those log4j will be low garbage.
>>>>
>>>> See the first paragraph of the Configuration section in the manual
>>>> page.
>>>>
>>>> Please let me know if this is not clear. (The fact that you asked means
>>>> this probably needs improvement...)
>>>>
>>>> Sent from my iPhone
>>>>
>>>> On 2016/04/18, at 20:18, Mikael Ståldal <mikael.stal...@magine.com>
>>>> wrote:
>>>>
>>>> Will garbage-free logging be enabled or disabled by default?
>>>>
>>>> On Mon, Apr 18, 2016 at 2:58 AM, Remko Popma (JIRA) <j...@apache.org>
>>>> wrote:
>>>>
>>>>>
>>>>>     [
>>>>> https://issues.apache.org/jira/browse/LOG4J2-1297?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15245018#comment-15245018
>>>>> ]
>>>>>
>>>>> Remko Popma commented on LOG4J2-1297:
>>>>> -------------------------------------
>>>>>
>>>>> TODO allocate many temporary objects -> allocate temporary objects
>>>>>
>>>>> TODO multi-threaded applications that use synchronous logging may see
>>>>> worse performance: the lock that was previously only around the IO
>>>>> operation is widened to include the text formatting and conversion to
>>>>> bytes. -> _synchronous_ logging performance may be worse for 
>>>>> multi-threaded
>>>>> applications in this mode due to synchronization on the shared buffer. If
>>>>> your application is multi-threaded and logging performance is important,
>>>>> consider using Async Loggers.
>>>>>
>>>>> TODO Caution: Only dates in the predefined formats are garbage-free ->
>>>>> Caution: Only the predefined date formats are garbage-free
>>>>>
>>>>> TODO "(Note that Log4j may call toString() on message and parameter
>>>>> objects when garbage-free logging is disabled because system property
>>>>> log4j2.enable.threadlocals is set to "false".)" -> Log4j may call
>>>>> toString() on message and parameter objects when garbage-free logging is
>>>>> disabled (when system property log4j2.enable.threadlocals is set to
>>>>> "false".)
>>>>>
>>>>> TODO "made an effort to make logging code garbage-free" -> "made an
>>>>> effort to make logging garbage-free"
>>>>>
>>>>>
>>>>> > 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
>>>>> >             Fix For: 2.6
>>>>> >
>>>>> >         Attachments: log4j-2.5-FlightRecording.png,
>>>>> log4j-2.6-FlightRecording.png
>>>>> >
>>>>> >
>>>>> > 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).
>>>>> > * The thread name is cached (this is the [default|
>>>>> https://issues.apache.org/jira/browse/LOG4J2-467]). Running with
>>>>> -DAsyncLogger.ThreadNameStrategy=UNCACHED will create garbage.
>>>>> > * 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).
>>>>> > Even with the above restrictions, Log4j may occasionally create
>>>>> garbage:
>>>>> > * Initially StringBuilders are presized to 128 characters. They may
>>>>> grow for larger messages (contributing to garbage in Old Gen). If  the
>>>>> StringBuilder grows beyond 512 characters it is trimmed back to 512
>>>>> characters to prevent memory leaks from excessively long messages. (TODO:
>>>>> the resizing algorithm is {{size = value.length * 2 + 2}}, so a better
>>>>> cutoff value is 518.)
>>>>> > * Messages containing {{"$\{"}} will be converted to a String and
>>>>> StrSubstitutor will be used to replace occurences of variables with their
>>>>> matching values. Multiple temporary objects are created during this 
>>>>> process.
>>>>> > 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-unsubscr...@logging.apache.org
>>>>> For additional commands, e-mail: log4j-dev-h...@logging.apache.org
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> [image: MagineTV]
>>>>
>>>> *Mikael Ståldal*
>>>> Senior software developer
>>>>
>>>> *Magine TV*
>>>> mikael.stal...@magine.com
>>>> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com
>>>>
>>>> Privileged and/or Confidential Information may be contained in this
>>>> message. If you are not the addressee indicated in this message
>>>> (or responsible for delivery of the message to such a person), you may
>>>> not copy or deliver this message to anyone. In such case,
>>>> you should destroy this message and kindly notify the sender by reply
>>>> email.
>>>>
>>>>
>>>
>>>
>>> --
>>> [image: MagineTV]
>>>
>>> *Mikael Ståldal*
>>> Senior software developer
>>>
>>> *Magine TV*
>>> mikael.stal...@magine.com
>>> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com
>>>
>>> Privileged and/or Confidential Information may be contained in this
>>> message. If you are not the addressee indicated in this message
>>> (or responsible for delivery of the message to such a person), you may
>>> not copy or deliver this message to anyone. In such case,
>>> you should destroy this message and kindly notify the sender by reply
>>> email.
>>>
>>
>>
>
>
> --
> Matt Sicker <boa...@gmail.com>
>

Reply via email to