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

Jakub edited comment on LOG4J2-2339 at 6/8/18 5:27 AM:
-------------------------------------------------------

Thx very much for help.
 This is what worked for me:
{code:java}
<property name="pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} | %-5.5p | %-15.15t | 
%-70.70CML | %-10.70X | %msg%n</property>{code}
{code:java}
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.pattern.ConverterKeys;
import org.apache.logging.log4j.core.pattern.NamePatternConverter;
import org.apache.logging.log4j.core.pattern.PatternConverter;

@Plugin(name = "ClassMethodLinePatternConverter", category = 
PatternConverter.CATEGORY)
@ConverterKeys({"CML", "classmethodline"})
public class ClassMethodLinePatternConverter extends NamePatternConverter {

    private static final String NA = "?";

    private ClassMethodLinePatternConverter(
            final String[] options) {
        super("Class Name", "class name", options);
    }

    public static ClassMethodLinePatternConverter newInstance(final String[] 
options) {
        return new ClassMethodLinePatternConverter(options);
    }

    /**
     * Format a logging event.
     *
     * @param event      event to format.
     * @param toAppendTo string buffer to which class name, method name and 
line will be appended.
     */
    @Override
    public void format(final LogEvent event, final StringBuilder toAppendTo) {
        final StackTraceElement element = event.getSource();
        if (element == null) {
            toAppendTo.append(NA);
        } else {
          
toAppendTo.append(element.getClassName()).append(".").append(element.getMethodName()).append(":").append(element.getLineNumber());
        }
    }

}
{code}
 

 


was (Author: jakkub):
Thx very much for help.
This is what worked for me:

{code:java}
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.pattern.ConverterKeys;
import org.apache.logging.log4j.core.pattern.NamePatternConverter;
import org.apache.logging.log4j.core.pattern.PatternConverter;

@Plugin(name = "ClassMethodLinePatternConverter", category = 
PatternConverter.CATEGORY)
@ConverterKeys({"CML", "classmethodline"})
public class ClassMethodLinePatternConverter extends NamePatternConverter {

    private static final String NA = "?";

    private ClassMethodLinePatternConverter(
            final String[] options) {
        super("Class Name", "class name", options);
    }

    public static ClassMethodLinePatternConverter newInstance(final String[] 
options) {
        return new ClassMethodLinePatternConverter(options);
    }

    /**
     * Format a logging event.
     *
     * @param event      event to format.
     * @param toAppendTo string buffer to which class name, method name and 
line will be appended.
     */
    @Override
    public void format(final LogEvent event, final StringBuilder toAppendTo) {
        final StackTraceElement element = event.getSource();
        if (element == null) {
            toAppendTo.append(NA);
        } else {
          
toAppendTo.append(element.getClassName()).append(".").append(element.getMethodName()).append(":").append(element.getLineNumber());
        }
    }

}
{code}

 

 

> format multiple conversion characters with one conversion specifier
> -------------------------------------------------------------------
>
>                 Key: LOG4J2-2339
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-2339
>             Project: Log4j 2
>          Issue Type: New Feature
>          Components: Core, Pattern Converters
>    Affects Versions: 2.8.2
>            Reporter: Jakub
>            Priority: Major
>
> I am writing on suggestion from [[email protected]] in 
> [https://stackoverflow.com/questions/50311762/log4j-set-class-and-method-summary-length-in-pattern]
>  
>  
> I would like to format multiple conversion characters with one conversion 
> specifier.
> As Remko explained, it is currently not possible
> _No, each modifier applies to one conversion. But Log4j could add a new 
> converter that means what you want. You can propose such a new converter on 
> the mailing list or issue tracker_
> Would it be a useful feature to add to log4j2 ? Would it be hard to implement 
> ?
>  
> EG
> I would like to set summary length of class.method.line with
> %-60.60CML
> It's not possible now. Below what doc states
> [https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html]
> {quote}Each conversion specifier starts with a percent sign (%) and is 
> followed by optional format modifiers and a conversion charact*er*. The 
> conversion charact*er* specifies the type of data
> The pattern parser knows when it has reached the end of a conversion 
> specifier when it reads a conversion charact*er*.
> {quote}
> It writes only about single conversion character, I would like to modify 
> multiple conversion characters with one conversion specifier.
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to