Необходимо написать отдельные файлы журнала на основе apikey, используя log4j2 для SOAP-запроса и ответа. мы на стороне клиента или потребляем SOAP webservice.
Я могу написать отдельные файлы журнала на основе apikey для запроса и ответа REST, но не знаю, как это сделать для запроса и ответа SOAP
код для записи журналов в отдельных файлах журналов выглядит следующим образом
Необходимо написать отдельные файлы журнала на основе apikey, используя log4j2 для SOAP-запроса и ответа. мы на стороне клиента или потребляем SOAP webservice.
Я могу написать отдельные файлы журнала на основе apikey для запроса и ответа REST, но не знаю, как это сделать для запроса и ответа SOAP
код для записи журналов в отдельные файлы журналов выглядит следующим образом:
public final class SPRestLog4j2Logger extends org.apache.logging.log4j.core.async.AsyncLogger {
private SPRestLog4j2Logger(LoggerContext context, String name, MessageFactory msgFactory) {
super(context, name, msgFactory);
this.setLevel(Level.ALL);
}
public static SPRestLog4j2Logger configureCategoryLogger(String apiKey, String loggingPath) {
LoggerContext context = new AsyncLoggerContext(apiKey);
MessageFactory msgFactory = new FormattedMessageFactory();
SPRestLog4j2Logger logger = new SPRestLog4j2Logger(context, apiKey, msgFactory);
RandomAccessFileAppender appender = RandomAccessFileAppender
.createAppender(
loggingPath + apiKey + ".log", // filename
"true", // append
"file_appender-" + apiKey, // name
"true", // immediateFlush
"", // bufferSize
"true", // ignoreExceptions
PatternLayout.createLayout(
"%-5p - [%d] - [%t] - [%l] : %m%n", null,
null, Charset.forName("UTF-8"), true, true, apiKey, apiKey), null, // filter
"false", // advertise
null, // advertiseURI
null // config
);
ConsoleAppender consoleAppender = ConsoleAppender.createAppender(
PatternLayout.createLayout(
"%-5p - [%d] - [%t] - [%l] : %m%n", null,
null, Charset.forName("UTF-8"), true, true, apiKey, apiKey), null, null,
"Console", null, null);
appender.start();
consoleAppender.stop();
logger.getContext().getConfiguration().getLoggerConfig(apiKey)
.addAppender(appender, Level.TRACE, null);
logger.getContext().getConfiguration().getLoggerConfig(apiKey)
.addAppender(consoleAppender, Level.OFF, null);
return logger;
}
}
код, используемый для записи SOAP-запроса / ответа в файл, выглядит следующим образом:
SalesCustomerSelectService customerService = new SalesCustomerSelectService(wsdlURL, SERVICE_NAME);
SalesCustomerSelect customerPort = customerService.getPort(SERVICE_NAME1, SalesCustomerSelect.class);
if (isLogging()) {
Client client = ClientProxy.getClient(customerPort);
client.getInInterceptors().add(new LoggingInInterceptor());
client.getOutInterceptors().add(new LoggingOutInterceptor());
}
Но не уверен, как динамически записывать запрос / ответ SOAP в отдельные файлы журнала.