Для dropwizard это немного сложнее, так как очень упрямый. Вот шаги, которые вы должны использовать для ведения журнала в стеке с помощью облачной регистрации. Примечание: я использовал версию 0.77.0-alpha
библиотеки com.google.cloud:google-cloud-logging-logback
.
- Создайте класс, который реализует
AppenderFactory<ILoggingEvent>
с аннотацией JsonTypeName
:
@JsonTypeName("stackdriver")
public class StackdriverLoggingAppenderFactory implements AppenderFactory<ILoggingEvent> {
@Override
public Appender<ILoggingEvent> build(LoggerContext context, String applicationName,
LayoutFactory<ILoggingEvent> layoutFactory,
LevelFilterFactory<ILoggingEvent> levelFilterFactory,
AsyncAppenderFactory<ILoggingEvent> asyncAppenderFactory) {
final LoggingAppender appender = new LoggingAppender();
appender.setName("stackdriver");
appender.setContext(context);
appender.start();
return appender;
}
}
- Добавьте значение аннотации в раздел ведения журнала файла конфигурации dropwizard (yaml):
logging:
level: INFO
appenders:
- type: stackdriver
- Добавить файл с именем
io.dropwizard.logging.AppenderFactory
в src/main/resources/META-INF.services
. Файл должен содержать полный пакет и имя класса, созданные на шаге 1, например,
com.acme.gcp.logging.StackdriverLoggingAppenderFactory
- Наконец, добавьте переменную среды с ключом
GOOGLE_CLOUD_PROJECT
и значением идентификатора проекта, в котором запускается экземпляр.
Я проверил это, запустив приложение локально на своем ноутбуке, и я увидел записи журнала в консоли Google Cloud в разделе Stackdriver Logging
.