Ana içeriğe geç

3.4.6. Log Producer All Provider#

Log Producer All Provider, Rest, MQ, JPA Data ve Fluent provider paketlerini içeren bir provider paketidir. Bu paketin amacı, uygulamanın loglama yöntemleri arasında yapılandırma (konfigürasyon) aracılığıyla kolayca geçiş yapabilmesini sağlamaktır.

Uyarı

Bu paket projeye dahil edildiğinde; JPA Data provider ile veritabanı, MQ provider ile Kafka ve Fluent provider ile Fluentd bağımlılıkları sisteme eklenecektir. Gereksiz bağımlılık yükünden kaçınmak adına, bu paketin yalnızca ihtiyaç duyulduğu durumlarda kullanılması önerilir.

Bağımlılıklar#

Gradle Dependencies

api (
    [group: 'tr.com.havelsan.framework.logger', name: 'hvl-logger-producer-all-provider'],
)

Kullanımı için Application Yml'a eklenmesi gerekenler#

hvl:
  logger:
    producer:
      enabled: ${LOGGER_PRODUCER_ENABLED:false}
      provider:
        all:
          type: ${LOGGER_PRODUCER_PROVIDER_TYPE:mq}
hvl.logger.producer.enabled: Log üretici modülünün aktif/pasif durumunu kontrol eden ana anahtar.

hvl.logger.producer.provider.all.type: Hangi provider tipi ile çalışılacağını belirten değerdir. [rest, mq, jpa, fluent] Varsayılan değer: mq

Uyarı

Seçilen type bilgisine bağlı olarak her sağlayıcının kendine özgü yapılandırmaları mevcuttur. Detaylı bilgi için ilgili sağlayıcı paketinin dokümantasyonuna başvurulmalıdır.


hvl-infra üzerinden Config Server kullanıldığı durumlarda bootstrap.yml dosyasındaki spring.cloud.config.profile pathine hvl-logger değerinin eklenmesi gerekmektedir. Böylece yukarıdaki özelliklerin ve daha fazlasının olduğu application-hvl-logger.yml dosyası projeye dahil olacaktır.

Uyarı

hvl.logger.producer.enabled değeri geliştirme ortamları için varsayılan olarak false olarak ayarlanmıştır.

Kullanımı#

All Provider'ın sağladığı sınıfların aktif hale gelmesi için aşağıdaki anotasyon konfigürasyon sınıfına eklenmelidir.

@HvlEnableLogProducerAllProvider

Örnek:

@Configuration
@HvlEnableLogProducerAllProvider
public class MyConfiguration extends HvlBaseConfiguration {
}

Log basılmak istenen sınıfa HvlLogProducerProvider sınıfı aşağıdaki gibi inject edilerek kullanılabilir.

@Service
public class HvlLoggerProducerServiceImpl implements HvlLoggerProducerService {

    private final HvlLogProducerProvider logProducerProvider;

    public HvlLoggerProducerServiceImpl(HvlLogProducerProvider HvlLogProducerProvider) {
        this.logProducerProvider = logProducerProvider;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void produceWithAllProvider(Long id) {
        final HvlEventLogModel eventLogModel = getHvlEventLogModel();

        eventLogModel.setMessage("Message with sync produceWithAllProvider");
        logProducerProvider.produceSync(eventLogModel);
    }

    private HvlEventLogModel getHvlEventLogModel() {
        final HvlEventLogModel eventLogModel = new HvlEventLogModel();
        eventLogModel.setIndexName("logger-sample");
        eventLogModel.setEventType("customEventType");
        eventLogModel.setMessage("My message");
        eventLogModel.setUsername("acuhadaroglu");
        eventLogModel.setAttributeMap(Map.of("param1", "value1"));
        return eventLogModel;
    }
}