Files
UnrealEngine/Engine/Source/Runtime/Analytics/AnalyticsLog/Private/AnalyticsProviderLog.h
2025-05-18 13:04:45 +08:00

48 lines
1.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "AnalyticsProviderConfigurationDelegate.h"
#include "Interfaces/IAnalyticsProvider.h"
namespace UE::Tasks { class FPipe; }
/**
* Implementation of the IAnalyticsProviderET interface that exports telemetry events to a file as Newline - delimited JSON
* By default,the log file is written to Saved/Telemetry folder of the application.
* FileName and FolderPath can be overridden in the configuration
* Here as a simple example of how a developer might implement and configure their own analytics provider for use with the StudioTelemerty plugin
*/
class FAnalyticsProviderLog : public IAnalyticsProvider
{
public:
FAnalyticsProviderLog(const FAnalyticsProviderConfigurationDelegate& GetConfigValue);
~FAnalyticsProviderLog();
virtual bool StartSession(const TArray<FAnalyticsEventAttribute>& Attributes = {}) override;
virtual void EndSession() override;
virtual void FlushEvents() override;
virtual void SetDefaultEventAttributes(TArray<FAnalyticsEventAttribute>&& Attributes) override;
virtual TArray<FAnalyticsEventAttribute> GetDefaultEventAttributesSafe() const override;
virtual int32 GetDefaultEventAttributeCount() const override;
virtual FAnalyticsEventAttribute GetDefaultEventAttribute(int AttributeIndex) const override;
virtual bool SetSessionID(const FString& InSessionID) override;
virtual void SetUserID(const FString& InUserID) override;
virtual FString GetSessionID() const override;
virtual FString GetUserID() const override;
virtual void RecordEvent(const FString& EventName, const TArray<FAnalyticsEventAttribute>& Attributes = {}) override;
private:
FString UserID;
FString SessionID;
TArray<FAnalyticsEventAttribute> DefaultEventAttributes;
TUniquePtr<FArchive> FileWriter;
TUniquePtr<UE::Tasks::FPipe> WriterPipe;
};