Thank you very much Ralph & Gary.
On Thu, Dec 3, 2015 at 11:18 AM, Ralph Goers
<[email protected]> wrote:
No, you cannot change the layout of an existing Appender. You cannot
change the level of the ThresholdFilter but you can remove the filter
and replace it with a new one. You can do this with the removeFilter
and addFilter methods. However, if you remove the filter then all
events will go to the Appender until the addFilter is completed. If
you add the new filter first then you probably would get closer to
the behavior you want.
Keep in mind that Log4j 2 has a lot more immutable objects than Log4j
1 did so that you won’t run into cases where you might get
exceptions or indeterminate behavior. That said, it should be
possible to replace the layout in a safe way.
Also, I don’t know if it helps you at all, but Log4j 2 now supports
PatternSelectors, so if you are using the PatternLayout but want
multiple patterns depending on some criteria you can now do that just
through configuration. So you could have a PatternSelector with n
predefined patterns and have the user change a setting on which one
he wants to use.
Ralph
On Dec 2, 2015, at 10:34 PM, Chathura Widanage
<[email protected]> wrote:
Gary,
Thank you very much.
Is there a way to setLayout and setThreshold of an appender at
runtime
using log4j 2, like we used to do with log4j 1.
Thanks.
On Thu, Dec 3, 2015 at 11:00 AM, Gary Gregory
<[email protected]>
wrote:
On Wed, Dec 2, 2015 at 12:12 PM, Chathura Widanage <
[email protected]
wrote:
We are developing a product(ESB) that will be used by an end
user. In our
product we have provided an interface to alter the logging
patterns
according the user preference in run time is self. We were able
to do
this
using log4j1. But I can't find a way to alter the pattern of
appender in
run time using log4j2.
In case of Console appender, we want to collect information about
the
appenders, so user can view them in a GUI which is provided by our
product.
Please let me know if there is a possible way of doing these
thing using
log4j2.
I would be glad if you can mention the log4j2 methods or
procedures that
can be used to performs the exact same function of the following
log4j1
methods.
setlayout
https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Appender.html#setLayout(org.apache.log4j.Layout)
https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/AppenderSkeleton.html#setLayout(org.apache.log4j.Layout)
setThreshold
https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/AppenderSkeleton.html#setThreshold(org.apache.log4j.Priority)
Setting the log level is a topic usually address by calling the
Configurator class.
Gary
getTarget
https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/ConsoleAppender.html#getTarget()
getEncoding
https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/ConsoleAppender.html#getFollow()
Thanks in advance
On Wed, Dec 2, 2015 at 7:32 PM, Ralph Goers
<[email protected]>
wrote:
I’m not sure what you are trying to do with the pattern is
necessary.
The
latest version of Log4j supports a PatternSelector that should
provide
what
you need.
I am not sure why the updating of the ConsoleAppender is
necessary. Why
can’t that just be configured?
Ralph
On Dec 2, 2015, at 12:29 AM, Chathura Widanage <
[email protected]>
wrote:
Hi all,
I am in a process of migrating an application from log4j1 to
log4j2.
I have successfully migrated 98% of the application but I am
stuck
at a
point where it is required to alter the configurations of an
Appender
at
the run time.
Below is the piece of code that we used in log4j1
public void updateAppender(AppenderView view) {
auditLog.info("Updating the appender with the name : {},
of
the
instance", view.getName());
AppenderSkeleton appender = (AppenderSkeleton)
LogManager.getRootLogger().getAppender(view.getName());
if (view.getPattern() != null) {
appender.setLayout(new
PatternLayout(view.getPattern()));
}
if (!"null".equals(view.getThreshold())) {
appender.setThreshold(Level.toLevel(view.getThreshold()));
}
}
Since in log4j2, there is no method called setLayout and
setThreshold
in
Appender class, Can I know a way to implement the above
functionality
using
the log4j2 APIs.
Further I want to migrate the following piece of code,
else if (appender instanceof ConsoleAppender) {
ConsoleAppender consoleAppender = (ConsoleAppender)
appender;
properties.put(CONSOLE_APPENDER_TARGET,
consoleAppender.getTarget());
properties.put(CONSOLE_APPENDER_ENCODING,
consoleAppender.getEncoding());
properties.put(CONSOLE_APPENDER_FOLLOW,
String.valueOf(consoleAppender.getFollow()));
}
Here I don't find getTarget,getEncoding,getFollow methods in
ConsoleAppender class.
Can some one please lead me to the way which I can implement the
above
functionalities using log4j2 APIs.
Thanks,
Chathura
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail:
[email protected]
--
E-Mail: [email protected] | [email protected]
Java Persistence with Hibernate, Second Edition
<http://www.manning.com/bauer3/>
JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
Spring Batch in Action <http://www.manning.com/templier/>
Blog: http://garygregory.wordpress.com
Home: http://garygregory.com/
Tweet! http://twitter.com/GaryGregory
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]