logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bart S. (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (LOG4J2-952) FAQ: How do I configure log4j2 programmatically in code without a configuration file?
Date Tue, 18 Aug 2015 14:33:45 GMT

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

Bart S. edited comment on LOG4J2-952 at 8/18/15 2:32 PM:
---------------------------------------------------------

Let's say the difference is that {{getAssembler()}} means the same as {{getSpecificationBuilder()}}
and {{getLoggerAssembler()}} means the same as {{getLoggerSpecificationBuilder}} but the idiom
might be more attractive. I yet don't know if your assemblers return actual objects or specifications.
If they return actual objects then there is not much of a compilation taking place.

In that case, with actual objects being returned it is not different than having a ConfigurationBuilder
that chains "add" methods and takes real e.g. ConsoleAppender.Builder objects, except that
this is a generic approach using parameters for type differentiation rather than using a different
builder for each specific class.

The idiom is however prettier than using "specificationBuilder". However, it might be almost
the same thing.


was (Author: xennex82):
Let's say the difference is that {{getAssembler()}} means the same as {{getSpecificationBuilder()}}
and {{getLoggerAssembler()} means the same as {{getLoggerSpecificationBuilder}} but the idiom
might be more attractive. I yet don't know if your assemblers return actual objects or specifications.
If they return actual objects then there is not much of a compilation taking place.

In that case, with actual objects being returned it is not different than having a ConfigurationBuilder
that chains "add" methods and takes real e.g. ConsoleAppender.Builder objects, except that
this is a generic approach using parameters for type differentiation rather than using a different
builder for each specific class.

The idiom is however prettier than using "specificationBuilder". However, it might be almost
the same thing.

> FAQ: How do I configure log4j2 programmatically in code without a configuration file?
> -------------------------------------------------------------------------------------
>
>                 Key: LOG4J2-952
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-952
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: API, Configurators, Documentation
>    Affects Versions: 2.1
>            Reporter: Joe Merten
>
> I found [this link|http://logging.apache.org/log4j/2.x/faq.html#config_from_code] which
said:
> {quote}
> You could use the static method #initialize(String contextName, ClassLoader loader, String
configLocation) in org.apache.logging.log4j.core.config.Configurator. (You can pass null for
the class loader.) Be aware that this class is not part of the public API so your code may
break with any minor release.
> {quote}
> This documentation is unclear because it points to a member function which needs a filename
{{configLocation}} where as the topic is ┬╗without a configuration file┬ź.
> It shoud rather point to the member function {{org.apache.logging.log4j.core.config.Configurator.initialize(ClassLoader
loader, ConfigurationSource source)}}.
> Example:
> {code:java}
> import org.apache.logging.log4j.core.config.ConfigurationSource;
> import org.apache.logging.log4j.core.config.Configurator;
> final String hardCodedXmlConfig =
>         "<?xml version='1.0' encoding='UTF-8'?>\n" +
>         "<Configuration status='INFO'>\n" +
>         "  <Appenders>\n" +
>         "    <Console name='Console' target='SYSTEM_OUT'>\n" +
>         "      <PatternLayout pattern='%d{HH:mm:ss.SSS} [%t] %-5level %logger{36}
- %msg%n'/>\n" +
>         "    </Console>\n" +
>         "  </Appenders>\n" +
>         "  <Loggers>\n" +
>         "    <Root level='debug'>\n" +
>         "      <AppenderRef ref='Console'/>\n" +
>         "    </Root>\n" +
>         "  </Loggers>\n" +
>         "</Configuration>\n";
> try {
>     Configurator.initialize(null, new ConfigurationSource(new ByteArrayInputStream(hardCodedXmlConfig.getBytes())));
> } catch (IOException e) {
>     e.printStackTrace();
> }
> {code}



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