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

Matt Sicker edited comment on LOG4J2-1539 at 8/23/16 1:55 AM:
--------------------------------------------------------------

{{Builder<T>}} is used by more than just plugin builder classes. One thing 
that's already injectable into plugins is {{Configuration}}. Perhaps the 
{{LoggerContext}} can be injected into the {{Configuration}}?

Another alternative is just adding support for injecting {{LoggerContext}} the 
same way {{Configuration}} is supported (e.g., by a custom annotation like 
{{@PluginContext}}) and adding a {{withLoggerContext(LoggerContext ctx)}} 
method to builders that require the {{LoggerContext}}.

Edit: {{LoggerContext}} already references {{Configuration}} in a non-final 
field. In that case, it might be a good idea to use 
{{WeakReference<LoggerContext>}} in {{AbstractConfiguration}}.


was (Author: jvz):
{{Builder<T>}} is used by more than just plugin builder classes. One thing 
that's already injectable into plugins is {{Configuration}}. Perhaps the 
{{LoggerContext}} can be injected into the {{Configuration}}?

Another alternative is just adding support for injecting {{LoggerContext}} the 
same way {{Configuration}} is supported (e.g., by a custom annotation like 
{{@PluginContext}}) and adding a {{withLoggerContext(LoggerContext ctx)}} 
method to builders that require the {{LoggerContext}}.

> Add Core API Configurator.shutdown(LoggerContext, long, TimeUnit)
> -----------------------------------------------------------------
>
>                 Key: LOG4J2-1539
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1539
>             Project: Log4j 2
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Gary Gregory
>             Fix For: 2.7
>
>         Attachments: logging-log4j2.patch
>
>
> Add Core API Configurator.shutdown(LoggerContext, long, TimeUnit):
> {code:java}
>     /**
>      * Blocks until all Log4j tasks have completed execution after a shutdown 
> request, or the timeout occurs, or the
>      * current thread is interrupted, whichever happens first.
>      * <p>
>      * Log4j can start threads to perform certain actions like file 
> rollovers, calling this method with a timeout will
>      * block until the rollover thread is done.
>      * </p>
>      * 
>      * @param ctx
>      *            the logger context to shut down, may be null.
>      * @param timeout
>      *            the maximum time to wait
>      * @param timeUnit
>      *            the time unit of the timeout argument
>      * @return {@code true} if the logger context terminated and {@code 
> false} if the timeout elapsed before
>      *         termination.
>      */
>     public static boolean shutdown(final LoggerContext ctx, final long 
> timeout, final TimeUnit timeUnit)
> {code}
> Clarify the existing Javadoc for {{shutdown(LoggerContext}} as:
> {code:java}
>     /**
>      * Shuts down the given logger context. This request does not wait for 
> Log4j tasks to complete.
>      * <p>
>      * Log4j starts threads to perform certain actions like file rollovers; 
> calling this method will not wait until the
>      * rollover thread is done. When this method returns, these tasks' status 
> are undefined, the tasks may be done or
>      * not.
>      * </p>
>      * 
>      * @param ctx
>      *            the logger context to shut down, may be null.
>      */
>     public static void shutdown(final LoggerContext ctx)
> {code}
> This also eliminates all intermittent failures in rollover unit tests like 
> {{org.apache.logging.log4j.core.appender.rolling.RollingAppenderCronTest.testAppender}}.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to