EventConfiguration
@frozen
public struct EventConfiguration : Sendable
Configuration parameters for Realm event recording.
Enabling Realm event recording is done by setting
Realm.Configuration.eventConfiguration
to any non-nil
EventConfiguration
. A default-initialized configuration is valid, but
some properties may need to be customized.
Using Realm event recording requires including the collection AuditEvent
in your schema defined on the server for the App which you will be writing
events to. The schema must contain the following fields:
_id
:ObjectId
activity
:String
event
:String?
data
:String?
timestamp
:Date
In addition, there must be aString?
field for each metadata key used.
-
Metadata which is attached to each event generated. Each key in the metadata dictionary is stored in a column with that name in the event Realm, and so the schema configured on the server for the AuditEvent collection must include all metadata fields which will be used. The metadata fields must be of type
String?
in the server-side schema.Declaration
Swift
public var metadata: [String : String]?
-
The sync user to write event data with. If not supplied, the user from the Realm being traced will be used. This can be a
User
associated with a differentApp
from the Realm being traced if desired.The user must be associated with a partition-based sync app. If the traced Realm is using flexible sync, setting this field to a PBS user is mandatory.
Declaration
Swift
public var syncUser: User?
-
A string prepended to the randomly-generated partition values used for uploading event data to the server. This can be customized to ensure that you can distinguish event partitions from partitions used by your application.
Declaration
Swift
public var partitionPrefix: String
-
A logger callback function. This function should be thread-safe as it may be called from multiple threads simultaneously.
Declaration
Swift
public typealias LoggerFunction = @Sendable (SyncLogLevel, String) -> Void
-
A logger which will be called to report information about the work done on the background event thread. If
nil
, this is instead reported to theSyncManager
‘s logger.Declaration
Swift
@preconcurrency public var logger: LoggerFunction?
-
The error handler which will be called if a sync error occurs when uploading event data. If
nil
, the error will be logged and thenabort()
will be called. Production usage should always define a custom error handler unless aborting on error is desired.Declaration
Swift
@preconcurrency public var errorHandler: (@Sendable (Swift.Error) -> Void)?
-
Creates an
EventConfiguration
which enables Realm event recording.Declaration
Swift
@preconcurrency public init(metadata: [String: String]? = nil, syncUser: User? = nil, partitionPrefix: String = "events", logger: LoggerFunction? = nil, errorHandler: (@Sendable (Swift.Error) -> Void)? = nil)