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