You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Jakub (JIRA)" <ji...@apache.org> on 2018/06/08 05:21:00 UTC
[jira] [Commented] (LOG4J2-2339) format multiple conversion
characters with one conversion specifier
[ https://issues.apache.org/jira/browse/LOG4J2-2339?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16505716#comment-16505716 ]
Jakub commented on LOG4J2-2339:
-------------------------------
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 [~remkop@yahoo.com] 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)