All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.paxml.log4j.EntityInfoConverter Maven / Gradle / Ivy

The newest version!
/**
 * This file is part of PaxmlCore.
 *
 * PaxmlCore is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * PaxmlCore is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with PaxmlCore.  If not, see .
 */
package org.paxml.log4j;

import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.helpers.PatternConverter;
import org.apache.log4j.spi.LoggingEvent;
import org.paxml.core.Context;
import org.paxml.core.Context.Stack;
import org.paxml.core.Context.Stack.IStackTraverser;
import org.paxml.core.IEntity;
import org.paxml.tag.ITag;

public class EntityInfoConverter extends PatternConverter {
    private final boolean fullStack;

    public EntityInfoConverter(boolean fullStack) {
        super();
        this.fullStack = fullStack;
    }

    @Override
    protected String convert(LoggingEvent event) {
        Context context = Context.getCurrentContext();
        if (context == null) {
            return "*";
        } else {

            Stack stack=context.getStack();

            final StringBuilder sb = new StringBuilder();

            if(!stack.isEmpty()){
                sb.append(stack.getFirst().getTagName());
            }
            stack.traverse(new IStackTraverser() {
                
                @Override
                public boolean onItem(IEntity entity, ITag tag) {
                    String name = entity.getResource().getName();
                    if (StringUtils.isBlank(name)) {
                        name = "?";
                    }
                    sb.insert(0, " > ").insert(0, tag.getLineNumber()).insert(0, "@").insert(0, name);
                    return fullStack;
                }
            });
            
            // when it has no stack, it shows question mark.
            return sb.length() > 0 ? sb.toString() : "?";
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy