Search in sources :

Example 1 with Holder

use of org.apache.log4j.builders.Holder in project logging-log4j2 by apache.

the class ConsoleAppenderBuilder method parseAppender.

@Override
public Appender parseAppender(final Element appenderElement, final XmlConfiguration config) {
    String name = getNameAttribute(appenderElement);
    Holder<String> target = new Holder<>(SYSTEM_OUT);
    Holder<Layout> layout = new Holder<>();
    Holder<List<Filter>> filters = new Holder<>(new ArrayList<>());
    Holder<String> level = new Holder<>();
    forEachElement(appenderElement.getChildNodes(), (currentElement) -> {
        switch(currentElement.getTagName()) {
            case LAYOUT_TAG:
                layout.set(config.parseLayout(currentElement));
                break;
            case FILTER_TAG:
                filters.get().add(config.parseFilters(currentElement));
                break;
            case PARAM_TAG:
                {
                    switch(getNameAttributeKey(currentElement)) {
                        case TARGET_PARAM:
                            {
                                String value = getValueAttribute(currentElement);
                                if (value == null) {
                                    LOGGER.warn("No value supplied for target parameter. Defaulting to " + SYSTEM_OUT);
                                } else {
                                    switch(value) {
                                        case SYSTEM_OUT:
                                            target.set(SYSTEM_OUT);
                                            break;
                                        case SYSTEM_ERR:
                                            target.set(SYSTEM_ERR);
                                            break;
                                        default:
                                            LOGGER.warn("Invalid value \"{}\" for target parameter. Using default of {}", value, SYSTEM_OUT);
                                    }
                                }
                                break;
                            }
                        case THRESHOLD_PARAM:
                            {
                                String value = getValueAttribute(currentElement);
                                if (value == null) {
                                    LOGGER.warn("No value supplied for Threshold parameter, ignoring.");
                                } else {
                                    level.set(value);
                                }
                                break;
                            }
                    }
                    break;
                }
        }
    });
    Filter head = null;
    Filter current = null;
    for (Filter f : filters.get()) {
        if (head == null) {
            head = f;
            current = f;
        } else {
            current.next = f;
            current = f;
        }
    }
    return createAppender(name, layout.get(), head, level.get(), target.get(), config);
}
Also used : Layout(org.apache.log4j.Layout) Filter(org.apache.log4j.spi.Filter) Holder(org.apache.log4j.builders.Holder) ArrayList(java.util.ArrayList) List(java.util.List)

Example 2 with Holder

use of org.apache.log4j.builders.Holder in project logging-log4j2 by apache.

the class AsyncAppenderBuilder method parseAppender.

@Override
public Appender parseAppender(final Element appenderElement, final XmlConfiguration config) {
    String name = getNameAttribute(appenderElement);
    Holder<List<String>> appenderRefs = new Holder<>(new ArrayList<>());
    Holder<Boolean> blocking = new BooleanHolder();
    Holder<Boolean> includeLocation = new BooleanHolder();
    Holder<String> level = new Holder<>("trace");
    Holder<Integer> bufferSize = new Holder<>(1024);
    forEachElement(appenderElement.getChildNodes(), (currentElement) -> {
        switch(currentElement.getTagName()) {
            case APPENDER_REF_TAG:
                Appender appender = config.findAppenderByReference(currentElement);
                if (appender != null) {
                    appenderRefs.get().add(appender.getName());
                }
                break;
            case PARAM_TAG:
                {
                    switch(getNameAttributeKey(currentElement)) {
                        case BUFFER_SIZE_PARAM:
                            {
                                String value = getValueAttribute(currentElement);
                                if (value == null) {
                                    LOGGER.warn("No value supplied for BufferSize parameter. Defaulting to 1024.");
                                } else {
                                    bufferSize.set(Integer.parseInt(value));
                                }
                                break;
                            }
                        case BLOCKING_PARAM:
                            {
                                String value = getValueAttribute(currentElement);
                                if (value == null) {
                                    LOGGER.warn("No value supplied for Blocking parameter. Defaulting to false.");
                                } else {
                                    blocking.set(Boolean.parseBoolean(value));
                                }
                                break;
                            }
                        case INCLUDE_LOCATION_PARAM:
                            {
                                String value = getValueAttribute(currentElement);
                                if (value == null) {
                                    LOGGER.warn("No value supplied for IncludeLocation parameter. Defaulting to false.");
                                } else {
                                    includeLocation.set(Boolean.parseBoolean(value));
                                }
                                break;
                            }
                        case THRESHOLD_PARAM:
                            {
                                String value = getValueAttribute(currentElement);
                                if (value == null) {
                                    LOGGER.warn("No value supplied for Threshold parameter, ignoring.");
                                } else {
                                    level.set(value);
                                }
                                break;
                            }
                    }
                    break;
                }
        }
    });
    return createAppender(name, level.get(), appenderRefs.get().toArray(new String[0]), blocking.get(), bufferSize.get(), includeLocation.get(), config);
}
Also used : Appender(org.apache.log4j.Appender) AsyncAppender(org.apache.logging.log4j.core.appender.AsyncAppender) BooleanHolder(org.apache.log4j.builders.BooleanHolder) Holder(org.apache.log4j.builders.Holder) ArrayList(java.util.ArrayList) List(java.util.List) BooleanHolder(org.apache.log4j.builders.BooleanHolder)

Example 3 with Holder

use of org.apache.log4j.builders.Holder in project logging-log4j2 by apache.

the class RewriteAppenderBuilder method parseAppender.

@Override
public Appender parseAppender(final Element appenderElement, final XmlConfiguration config) {
    String name = getNameAttribute(appenderElement);
    Holder<List<String>> appenderRefs = new Holder<>(new ArrayList<>());
    Holder<RewritePolicy> rewritePolicyHolder = new Holder<>();
    Holder<String> level = new Holder<>();
    Holder<Filter> filter = new Holder<>();
    forEachElement(appenderElement.getChildNodes(), (currentElement) -> {
        switch(currentElement.getTagName()) {
            case APPENDER_REF_TAG:
                Appender appender = config.findAppenderByReference(currentElement);
                if (appender != null) {
                    appenderRefs.get().add(appender.getName());
                }
                break;
            case REWRITE_POLICY_TAG:
                {
                    RewritePolicy policy = config.parseRewritePolicy(currentElement);
                    if (policy != null) {
                        rewritePolicyHolder.set(policy);
                    }
                    break;
                }
            case FILTER_TAG:
                {
                    filter.set(config.parseFilters(currentElement));
                    break;
                }
            case PARAM_TAG:
                {
                    if (getNameAttributeKey(currentElement).equalsIgnoreCase(THRESHOLD_PARAM)) {
                        String value = getValueAttribute(currentElement);
                        if (value == null) {
                            LOGGER.warn("No value supplied for Threshold parameter, ignoring.");
                        } else {
                            level.set(value);
                        }
                    }
                    break;
                }
        }
    });
    return createAppender(name, level.get(), appenderRefs.get().toArray(new String[0]), rewritePolicyHolder.get(), filter.get(), config);
}
Also used : RewriteAppender(org.apache.logging.log4j.core.appender.rewrite.RewriteAppender) Appender(org.apache.log4j.Appender) Filter(org.apache.log4j.spi.Filter) Holder(org.apache.log4j.builders.Holder) ArrayList(java.util.ArrayList) List(java.util.List) RewritePolicy(org.apache.log4j.rewrite.RewritePolicy)

Aggregations

ArrayList (java.util.ArrayList)3 List (java.util.List)3 Holder (org.apache.log4j.builders.Holder)3 Appender (org.apache.log4j.Appender)2 Filter (org.apache.log4j.spi.Filter)2 Layout (org.apache.log4j.Layout)1 BooleanHolder (org.apache.log4j.builders.BooleanHolder)1 RewritePolicy (org.apache.log4j.rewrite.RewritePolicy)1 AsyncAppender (org.apache.logging.log4j.core.appender.AsyncAppender)1 RewriteAppender (org.apache.logging.log4j.core.appender.rewrite.RewriteAppender)1