Я бы хотел использовать Log4j2 и для этого настраиваю свой MainVerticle с системными свойствами,
public class MainVerticle extends AbstractVerticle
{
static {
System.setProperty( "vertx.logger-delegate-factory-class-name",
"io.vertx.core.logging.Log4j2LogDelegateFactory" );
System.setProperty( "log4j2.debug", "true" );
}
....
}
Затем я развертываю свой HttpVerticle из этой вертикали, а в вертике HTTP япытаясь использовать параметризованные операторы, которые не работают.Поэтому я добавил пару операторов ведения журнала, чтобы показать используемый делегат средства ведения журнала, а также системное свойство:
public class HttpServerVerticle extends AbstractVerticle
{
private static final Logger LOGGER = LoggerFactory.getLogger( HttpServerVerticle.class );
@Override
public void start() throws Exception
{
LOGGER.info( System.getProperty( "vertx.logger-delegate-factory-class-name" ) );
LOGGER.info( LOGGER.getDelegate().getClass().getName() );
....
И ниже в обработчике входящего сообщения я использую это:
LOGGER.info( "Chat message received: {}" + message.body(), message.body() );
Обратите внимание, что я добавляю message.body (), используя конкатенацию, чтобы доказать, что сообщение не является пустой строкой.
Вывод этих операторов журнала:
[INFO] Sep 24, 2018 2:46:09 AM ca.LinkEdTutoring.chat.http.HttpServerVerticle
[INFO] INFO: io.vertx.core.logging.Log4j2LogDelegateFactory
[INFO] Sep 24, 2018 2:46:09 AM ca.LinkEdTutoring.chat.http.HttpServerVerticle
[INFO] INFO: io.vertx.core.logging.JULLogDelegate
и для входящего сообщения с буквой "b":
[INFO] INFO: Chat message received: {}b
Я попытался установить системные свойства в файле pom.xml и в командной строке с аргументами -D,
Это с vert.x 3.5.3
Есть мысли о том, что я забыл сделать?
================
РЕДАКТИРОВАТЬ: захват основных точек из потока комментариев.
- не может установить системные свойства в тексте, потому что регистратор JUL vert.x запускается перед основнымverticle.
- не может быть установлен ... в pom.xml при запуске кода с плагином vertx.Плагин mvn vertx должен вызываться после инициализации vertx.
- единственный способ переопределить регистратор JUL - это командная строка с использованием -D vargs.
- не забывайте, что vargsустанавливается перед ключом -jar, т. е. $ java -Dx = y -jar jarname.jar