v2.0.0
Major release: pluggable storage. Elasticsearch is now one storage backend behind three storage-agnostic interfaces, on a modernized foundation. See UPGRADE-2.0.md for the migration guide.
Added
- Storage abstraction:
ActivityLogStorageInterface,CurrentDataTrackerStorageInterfaceandStorageInitializerInterfacein the newLocastic\Loggastic\Storagenamespace; implement and alias them to store activity logs in a custom backend (#40) - Elasticsearch implementations of the storage interfaces in
Locastic\Loggastic\Bridge\Elasticsearch\Storage(used by default, no configuration changes needed) (#40) - Support for Symfony 8 and DoctrineBundle 3 (
symfony/*now^6.4 || ^7.0 || ^8.0,doctrine/doctrine-bundlenow^2.8 || ^3.0) (#39) - Basic auth (
elastic_user,elastic_password) andelastic_ssl_verificationconfig options for secured Elasticsearch clusters (#37, originally proposed in #26 by @jakubdusek)
Changed (breaking - see UPGRADE-2.0.md)
elasticsearch/elasticsearch^8.0 || ^9.0; Elasticsearch 7 is no longer supported and a PSR-18 HTTP client implementation is required (#37)- Serializer attributes moved to the
Symfony\Component\Serializer\Attributenamespace; update theGroupsimport on your loggable entities (#39) - Modern bundle directory layout (
AbstractBundle, root-levelconfig/);LocasticLoggasticExtensionandConfigurationremoved (#38) - Core services depend on the storage interfaces instead of the Elasticsearch services; constructor signatures changed (#40)
ActivityLogProviderInterface::getActivityLogsByIndexAndId()removed; useElasticsearchActivityLogStorage::findByIndexAndObjectId()(#40)ElasticNormalizationContextTraitmoved toLocastic\Loggastic\Serializer\Traits\NormalizationContextTrait(#40)ActivityLogDoctrineSubscriberregisters via per-eventdoctrine.event_listenertags (DoctrineBundle 3 compatibility) (#39)
Removed
ActivityLogProvider::getCurrentDataTrackerByClassAndId()(broken, threwTypeErroron every hit) and the unusedIndexNotFoundException(#40)AnnotationLoggableContextCollectionFactory(deprecated since 1.2); use the#[Loggable]attribute or XML/YAML (#39)
Fixed
ElasticsearchService::getItemById()always returned null (#37)- Deleting an entity together with its
LoggableChildInterfacechildren crashed the update handler (#41) ElasticsearchService::bulkCreate()now refreshes the index, so trackers written by the populate command are immediately searchable (#42)
Full changelog: v1.2.0...v2.0.0