Remko Popma created LOG4J2-232:
----------------------------------
Summary: Custom Converter plugin won't load.
Key: LOG4J2-232
URL: https://issues.apache.org/jira/browse/LOG4J2-232
Project: Log4j 2
Issue Type: Bug
Affects Versions: 2.0-beta5
Reporter: Remko Popma
From: John Smith <[email protected]>
To: [email protected]
Sent: Thursday, May 2, 2013 5:41 AM
Subject: Custom Converter plugin won't load.
Using log4j2-beta5
I'm writing a custom PatternConverter to mask logs for such things as
Credit Card and Card Security Code and some additional elements.
My converter looks like so....
package com.xxx.log4j.converters;
import java.util.List;
import java.util.regex.Pattern;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.layout.PatternLayout;
import org.apache.logging.log4j.core.pattern.ConverterKeys;
import org.apache.logging.log4j.core.pattern.LogEventPatternConverter;
import org.apache.logging.log4j.core.pattern.PatternFormatter;
import org.apache.logging.log4j.core.pattern.PatternParser;
@Plugin(name = "MaskConverter", type = "Converter")
@ConverterKeys({"ma", "mask" })
public class MaskConverter extends LogEventPatternConverter {
private final List<PatternFormatter> formatters;
private final Pattern ccPattern;
private final Pattern cvnPattern;
public static final String CARD_PATTERN =
"(AcctNumber|AcctNumber2)([=\\^])([0-9]+)([0-9]{4})";
public static final String CARD_MASK = "$1$2********$4";
public static final String CVN_PATTERN = "(Cvn)([=\\^])([0-9]{3,4})";
public static final String CVN_MASK = "$1$2****";
private MaskConverter(final List<PatternFormatter> formatters, final
Pattern ccPattern, final Pattern cvnPattern) {
super("ma", "mask");
System.out.println("Here...");
this.formatters = formatters;
this.ccPattern = ccPattern;
this.cvnPattern = cvnPattern;
}
public static MaskConverter newInstance(final Configuration config,
final String[] options) {
System.out.println("There...");
if (options.length != 1) {
LOGGER.error("Incorrect number of options on mask. Expected 1
received " + options.length);
return null;
}
final Pattern ccPattern = Pattern.compile(CARD_PATTERN,
Pattern.CASE_INSENSITIVE);
final Pattern cvnPattern = Pattern.compile(CVN_PATTERN,
Pattern.CASE_INSENSITIVE);
final PatternParser parser =
PatternLayout.createPatternParser(config);
final List<PatternFormatter> formatters = parser.parse(options[0]);
return new MaskConverter(formatters, ccPattern, cvnPattern);
}
@Override
public void format(final LogEvent event, final StringBuilder toAppendTo) {
System.out.println("Where..." + event.getMessage());
final StringBuilder buf = new StringBuilder();
for (final PatternFormatter formatter : formatters) {
formatter.format(event, buf);
}
toAppendTo.append(ccPattern.matcher(cvnPattern.matcher(buf.toString()).replaceAll(CVN_MASK)).replaceAll(CARD_MASK));
}
}
And my log4j2.xml looks like...
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="TRACE" monitorInterval="5"
packages="com.xxx.log4j.converters,">
<appenders>
<FastFile name="FILE" fileName="C:/Temp/XXXJava/logs/vertx.log"
immediateFlush="false" append="false">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} -
%mask{%msg}%n"/>
</FastFile>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} -
%mask{%msg}%n"/>
</Console>
</appenders>
<loggers>
<root level="DEBUG">
<appender-ref ref="Console"/>
<appender-ref ref="FILE"/>
</root>
</loggers>
</configuration>
But it doesn't seem to load the plugin I don't see any of my print
statements in the console and all I see is the word ask appended to my log
messages.
Have I missed something
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]