OpenLab Studio | >= 0.13.x |
OpenLab SDK | >= 0.13.x |
IDE | Visual Studio 2022 Ver.: 17.14.13 |
Linguaggi | C# |
Versione .NET | 8 |
Generale #
Un logger storage permette di implementare una destinazione per i messaggi di log. All’interno viene implementata la sintassi del messaggio e la destinazione. La classe LoggerStandard
passa un oggetto LoggerMessageData
ad ogni logger storage che esegue con i dati del messaggio.
I logger storage possono essere usati per scrivere il messaggio di log in un file, in un database, etc.
E’ possibile scaricare il progetto Visual Studio completo qui
Setup del ambiente di sviluppo #
- Aprire Visual Studio -> Crea un nuovo progetto
- Selezionare
Libreria di classi(.NET Framework)
- Impostiamo come nome
LoggerStoragesSimpleFile
- Framework
.NET8.0
E’ necessatio importare OpenLab SDK nelle dipendenze:
- Se è installato OpenLab Studio l’SDK è già nella cartella lib altrimenti scaricare OpenLab SDK dalla pagina download
InfoPer la versione dell’SDK da usare vedere la tabella all’inizio - Nella finestra
Esplora Soluzioni
cliccare con il tasto destro sulla voceDipendenze
del progettoPluginHelloWorld
, - Seleziona
Aggiungi riferimento a progetto
per aprire la finestraGestione riferimenti
, cliccareSfoglia
in basso - Aprire la cartella
lib
e selezionare tutti i file, se è installato OpenLab Studio è possibile utilizzare le librerie nella cartellalib
di OpenLab Studio
InfoNon basta selezionare OpenLabSDK.dll come librerie. L’SDK dipende da altre dll. Di seguito è riportata la lista minima delle librerie da integrare:
OpenLabSDK.dll
System.IO.Ports.dll
Implementazione di base #
In questo paragrafo viene implementato un logger storage che scrive i messaggi di log in un file.
Creare la classe LoggerStorageSimpleFile
e un file per la configurazione config.json
. La classe deve essere public e deve estendere la classe LoggerStorage
public class LoggerStorageSimpleFile : LoggerStorage { string fileString; public LoggerStorageSimpleFile(IErrorManager errorManager, IEventsManager eventsManager, LoggerStorageDefinition def) : base(errorManager, eventsManager, storageDefinition) { fileString = def.config.GetProperty("file").ToString(); } public override void deinit() { throw new NotImplementedException(); } public override void init() { return; } public override LoggerMessageData[] read() { throw new NotImplementedException(); } private string syntaxDigest(LoggerMessageData data) { return "["+ $"{data.date:dd/MM/yyyy hh:mm:ss tt}"+ "]["+data.Level+"] "+data.Message; } public override LoggerMessageData write(LoggerMessageData data) { using (StreamWriter outputFile = new StreamWriter(fileString, true)) { outputFile.WriteLine(data); } return data; } }
Il codice sopra è basilare, implementa solamente il costruttore e metodo write
, LoggerStandard
chiama questo metodo, di ogni logger storage, quando deve scrivere un messaggio. Nel costruttore viene letta la configurazione json che è stata passata come argomento del tipo LoggerStorageDefinition
in cui si aspetta di trovare una proprietà di nome file
e un valore di tipo stringa che sarà il path assoluto del file di log in cui scrivere.
Configurazione #
E’ stato creato un file inizialmente per la configurazione di questo logger storage. Aprire il file config.json nel progetto e inserire una proprietà file con il path del file(In questo caso la directory principale di OpenLab Studio)
{ "file": "general.log" }
Ora è necessario dire a OpenLab Studio di leggere questo logger storage e assegnarlo al logger, per fare questo nel file di configurazione di default di OpenLab Studio(config.json) aggiungere un oggetto json config
con una proprietà path
che specifica il path del file di configurazione del logger storage nell’array storages
sotto logger
, in questo modo
[...] "logger": { "enabled": true, "loadStoragesOnStart": true, "storages": [ { "enabled": true, "path": "plugins\\LoggerStoragesStandard\\LoggerStoragesStandard.dll", "config": { "path": "plugins\\LoggerStoragesStandard\\config.json" } } [...] ]
Esportazione ed installazione #
Ora dobbiamo esportare il logger storage in una dll ed installarla insieme al file di configurazione in OpenLab Studio.
Creare la cartella LoggerStorageSimpleFile
nella cartella plugins
di OpenLab Studio
Per esportare il progetto
- Tasto destro sul progetto ->
Pubblica
- Selezionare
Cartella
- Lasciare il percorso di default
- Cliccare su
Pubblica
- Cliccare su
Esplora
per visualizzare i file creati - Prelevare solo il file
LoggerStoragesSimpleFile.dll
e il fileconfig.json
dalla cartella principale del progetto, ecopiarli nella cartellaLoggerStorageSimpleFile
creata prima
Non copiare l’SDK o altri fileAttenzione
Pipe tra logger storage #
I dati del messaggio vengono incartanti nella classe LoggerStorageData
l’istanza di questa classe , quando si invia un messaggio, l’istanza entra come argomento del metodo write
, ed esce come ritorno del medesimo metodo. I logger prende il valore di ritorno e lo passa come argomento al successivo logger storage, e cosi via.