hpcnx commented on issue #2323:
URL:
https://github.com/apache/logging-log4j2/issues/2323#issuecomment-1967415948
Thanks for looking into this!
Here is the exception:
Caused by: java.lang.IllegalArgumentException: found 1 argument
placeholders, but provided 0 for pattern `(new String("{\"key\":{}}"))`
at
org.apache.logging.log4j.message.ParameterFormatter.formatMessage(ParameterFormatter.java:238)
~[log4j-api-2.21.1.jar:?]
at
org.apache.logging.log4j.message.ParameterizedMessage.formatTo(ParameterizedMessage.java:261)
~[log4j-api-2.21.1.jar:?]
at
org.apache.logging.log4j.core.pattern.MessagePatternConverter$SimpleMessagePatternConverter.format(MessagePatternConverter.java:121)
~[log4j-core-2.21.1.jar:?]
at
org.apache.logging.log4j.core.layout.PatternLayout$NoFormatPatternSerializer.toSerializable(PatternLayout.java:342)
~[log4j-core-2.21.1.jar:?]
at
org.apache.logging.log4j.core.layout.PatternLayout.toText(PatternLayout.java:240)
~[log4j-core-2.21.1.jar:?]
at
org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:225)
~[log4j-core-2.21.1.jar:?]
at
org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:59)
~[log4j-core-2.21.1.jar:?]
at
org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:219)
~[log4j-core-2.21.1.jar:?]
at
org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:212)
~[log4j-core-2.21.1.jar:?]
at
org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:203)
~[log4j-core-2.21.1.jar:?]
at
org.apache.logging.log4j.core.appender.RollingFileAppender.append(RollingFileAppender.java:301)
~[log4j-core-2.21.1.jar:?]
at
org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:161)
~[log4j-core-2.21.1.jar:?]
at
org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:134)
~[log4j-core-2.21.1.jar:?]
at
org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:125)
~[log4j-core-2.21.1.jar:?]
at
org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:89)
~[log4j-core-2.21.1.jar:?]
at
org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:686)
~[log4j-core-2.21.1.jar:?]
at
org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:644)
~[log4j-core-2.21.1.jar:?]
at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:620)
~[log4j-core-2.21.1.jar:?]
at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:556)
~[log4j-core-2.21.1.jar:?]
at
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:81)
~[log4j-core-2.21.1.jar:?]
at org.apache.logging.log4j.core.Logger.log(Logger.java:163)
~[log4j-core-2.21.1.jar:?]
at
org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2165)
~[log4j-api-2.21.1.jar:?]
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2119)
~[log4j-api-2.21.1.jar:?]
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2102)
~[log4j-api-2.21.1.jar:?]
at
org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:1988)
~[log4j-api-2.21.1.jar:?]
at
org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1851)
~[log4j-api-2.21.1.jar:?]
at
org.apache.logging.log4j.spi.AbstractLogger.info(AbstractLogger.java:1285)
~[log4j-api-2.21.1.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
~[?:1.8.0_382]
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
~[?:1.8.0_382]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
~[?:1.8.0_382]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_382]
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126)
~[rhino-1.7.7.1.jar:1.7.7.1]
at
org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:225)
~[rhino-1.7.7.1.jar:1.7.7.1]
at
org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1479)
~[rhino-1.7.7.1.jar:1.7.7.1]
at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:815)
~[rhino-1.7.7.1.jar:1.7.7.1]
at
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:109)
~[rhino-1.7.7.1.jar:1.7.7.1]
at
org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393)
~[rhino-1.7.7.1.jar:1.7.7.1]
at
com.intervoice.scxml.runtime.language.ecmascript.RhinoContext$CustomContextFactory.doTopCall(RhinoContext.java:3185)
~[com.intervoice.scxml.runtime.core_13.0.0.202402262224.jar:?]
at
org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3282)
~[rhino-1.7.7.1.jar:1.7.7.1]
at
org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:120)
~[rhino-1.7.7.1.jar:1.7.7.1]
at
com.intervoice.scxml.runtime.language.ecmascript.RhinoContext.cachedEvaluate(RhinoContext.java:1279)
~[com.intervoice.scxml.runtime.core_13.0.0.202402262224.jar:?]
at
com.intervoice.scxml.runtime.language.ecmascript.RhinoContext.evaluateNonSerializable(RhinoContext.java:1389)
~[com.intervoice.scxml.runtime.core_13.0.0.202402262224.jar:?]
at
com.intervoice.scxml.runtime.internal.model.Script.doStartAction(Script.java:222)
~[com.intervoice.scxml.runtime.core_13.0.0.202402262224.jar:?]
... 17 more
Here is some code:
public synchronized ILogger getLogger(String name)
{
final LoggerContextFactory factory = LogManager.getFactory();
if (factory instanceof Log4jContextFactory) {
final ContextSelector selector = ((Log4jContextFactory)
factory).getSelector();
if (selector instanceof CustomContextSelector) {
CustomContextSelector namedContextSelector =
(CustomContextSelector) selector;
CustomLoggerContext ctx =
namedContextSelector.locateContext(loggerContext.getName(),loggerContext.getName(),loggerContext.getConfigLocation());
return (ILogger)ctx.getLogger(name);
}
}
ILogger logger = (ILogger) LogManager.getLogger(name);
return logger;
}
public class CustomLoggerContext extends LoggerContext {
private static final long serialVersionUID = 1L;
public CustomLoggerContext(String name) {
super(name);
}
public CustomLoggerContext( String name, Object externalContext, URI
configLocn) {
super(name,externalContext,configLocn);
}
@Override
protected Logger newInstance(final LoggerContext ctx, final String name,
final MessageFactory messageFactory) {
return new CustomLogger(ctx, name, messageFactory);
}
}
public class CustomLogger extends Logger implements ILogger {
private static final String FQCN = CustomLogger.class.getName();
protected CustomLogger(LoggerContext context, String name,
MessageFactory messageFactory) {
super(context, name, messageFactory);
}
public void info(CustomLogMessage logMessage) {
logIfEnabled(FQCN, Level.INFO, null, logMessage, null);
}
...
}
The application is doing script to log info(message).
var data = '{"key":{}}';
Packages.com.intervoice.scxml.runtime.logging.LoggerUtil.getUserLogger("myLogger").info(data.toSource());
Only when data contains {} as value it throws the exception.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]