71 lines
3 KiB
C++
71 lines
3 KiB
C++
// Portage UE 5.5 - lot L3 (journalisation). Voir Docs/Migration/04_Cahier_Des_Charges.md.
|
|
//
|
|
// Sous-systeme d'instance de jeu : cree et detruit avec GI, sans aucune modification de
|
|
// Blueprint. Il n'altere aucun message existant (les comparaisons A/B avec la build 4.27
|
|
// reposent sur ces messages) ; il AJOUTE :
|
|
// - au demarrage, un resume : versions, modules de donnees presents, fichiers par type ;
|
|
// - en fin de session, un bilan : volume de journal par categorie et verbosite, et les
|
|
// signatures d'avertissements/erreurs les plus frequentes, dedoublonnees.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "Containers/Ticker.h"
|
|
#include "Subsystems/GameInstanceSubsystem.h"
|
|
#include "LPSessionLogSubsystem.generated.h"
|
|
|
|
class FLPLogCounter;
|
|
|
|
UCLASS()
|
|
class LIFEPLAY_API ULPSessionLogSubsystem : public UGameInstanceSubsystem
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
virtual void Initialize(FSubsystemCollectionBase& Collection) override;
|
|
virtual void Deinitialize() override;
|
|
|
|
/** Ecrit le bilan courant sans attendre la fin de session (console : LifePlay.LogSummary). */
|
|
UFUNCTION(BlueprintCallable, Category = "LifePlay|Log")
|
|
void LogSessionSummary() const;
|
|
|
|
private:
|
|
void LogStartupSummary() const;
|
|
|
|
/**
|
|
* Diagnostic (lot L5) : ecrit dans le journal le contenu des variables de l'instance de
|
|
* jeu (GI) nommees sur la ligne de commande, par exemple -LPDumpVars=MeshSexRace,LegacyPercentage.
|
|
* Un tableau est ecrit element par element. Sans l'option, ne fait rien.
|
|
*/
|
|
void DumpRequestedVariables(const TCHAR* When) const;
|
|
|
|
/**
|
|
* Diagnostic (lot L5) : avec -LPTraceScriptEx=<texte> -LPTraceLocals=<mot1,mot2>, a chaque
|
|
* exception de script Blueprint dont la description contient <texte> (3 premieres
|
|
* seulement, -LPTraceMax=N pour changer), ecrit la pile d'appel et les variables locales
|
|
* du cadre dont le nom ou le type de structure contient l'un des mots.
|
|
* Lot L7i : -LPTraceFunctions=<f1,f2> ne retient que les exceptions levees dans ces fonctions ;
|
|
* -LPTraceDepth=N ecrit aussi les variables locales des N cadres appelants ;
|
|
* -LPTraceGIVars=<v1,v2> ecrit ces variables de l'instance de jeu a chaque releve.
|
|
* Sans l'option, rien n'est branche : le moteur garde son comportement de journal normal.
|
|
*/
|
|
void StartScriptExceptionTrace();
|
|
|
|
/**
|
|
* Diagnostic (lot L7i) : avec -LPDumpOnLog=<texte>, chaque fois qu'une ligne du journal contient
|
|
* <texte> (au plus une fois toutes les 5 s, -LPDumpMax=N releves, 20 par defaut), ecrit 1,5 s plus
|
|
* tard les proprietes nommees par -LPDumpPaths=<a,b.c> a partir de l'instance de jeu (GI) : un
|
|
* chemin "PlayerCharacter.Race" suit la propriete objet PlayerCharacter puis lit Race.
|
|
* Sans l'option, rien n'est branche.
|
|
*/
|
|
void StartLogTriggeredDump();
|
|
void DumpPaths(int32 Index, const FString& Line) const;
|
|
|
|
FDelegateHandle ScriptExceptionHandle;
|
|
|
|
TSharedPtr<FLPLogCounter> Counter;
|
|
TSharedPtr<class FLPLogTrigger> Trigger;
|
|
TArray<FString> DumpPathList;
|
|
FTSTicker::FDelegateHandle EveryHandle;
|
|
double StartTime = 0.0;
|
|
};
|