Localized Event Logger

The objective of this tutorial is to configure an event logger and then display recorded events with a data grid. For each localized field of an event, the text is translated into the language of the current user and is displayed in the corresponding column of a data grid.

Per ciascun campo localizzato dell’evento si vuole visualizzare nella corrispondente colonna il testo tradotto nella lingua dell’utente corrente.

Creating an Alarm

Creare un nuovo allarme a livello esclusivo da Allarmi >> Allarme a livello esclusivo, creare una variabile analogica di modello chiamata “Temperature” il cui valore è impostato indicativamente a 20, impostare 0 e 100 rispettivamente per le proprietà Low e High di EURange.

Collegare dinamicamente la variabile alla proprietà Valore di input dell’allarme e impostare il Limite Alto a 60.

Inserire un indicatore lineare per controllare il valore della variabile ed impostare una zona di avvertimento da 60 a 100. Dalla libreria oggetti trascinare nel progetto il widget della Griglia Allarmi.

Configuration of the Event Logger

Creare un database interno da Database >> Database interno che conterrà tutti gli eventi generati, creare poi un nuovo logger eventi da Logger >> Logger degli eventi e alla sua proprietà Database collegare dinamicamente lo store precedentemente creato.

Alla proprietà Tipo di evento collegare dinamicamente Types >> EventTypes >> BaseEventTypes >> ConditionTypes (Types) >> AknowledgeableConditionTypes >> AlarmConditionTypes (Types) per ascoltare gli eventi degli allarmi.

image0

Con un doppio clic su LoggerDegliEventi comparirà l’editor centrale dell’oggetto mostrando tutti i campi dell’evento e permettendo di scegliere cosa storicizzare. In questo caso, si opterà per Time, Message, Severity e gli stati ActiveState_Id, AckedState_Id, ConfirmedState_id e infine ConditionName.

La conferma tramite il pulsante “Apply” genererà una tabella nel database interno (con il nome del logger eventi), e le colonne corrispondenti ai campi che abbiamo selezionato con il tipo di dato relativo.

Dopo aver definito quali campi degli eventi acquisire si può scegliere su quale nodo ascoltare questi eventi tramite la proprietà Sorgente dell’evento.

Per catturare tutti gli eventi provenienti da qualsiasi nodo di progetto lasciare vuota la proprietà. Nel nostro scenario, lasceremo vuota la proprietà per catturare gli allarmi provenienti da qualsiasi nodo di progetto.

Defining Locales for an Event Logger

In the Locales field of the logger define a subset of the project locales to record events. If you choose to store events for multiple locales, you must enter the list of locales. When the field is left blank, events are recorded using all locales defined for the project. The name of the localized columns have a suffix defined in the following format: ColumnName_localeIdentifier, e.g. Messagge_en-IT, Message_en-US, Message_de-DE.

Quando il campo viene lasciato vuoto, gli eventi sono storicizzati con tutti i locale di progetto. Il nome delle colonne localizzate hanno un suffisso definito come nomeColonna_locale ad esempio Messagge_it-IT, Message_en-US, Message_de-DE.

For this example, the field is left empty so all the locales of the project can be used.

Configuration of the Data Grid

Insert a data grid into your project to log of all alarms ( from MainWindow >> Data Controls >> Data Grid ), with its update button. Drag EventsLogger1 into the data grid to autocomplete it.

Using a Parametric Query in the Data Grid

In order for localized fields to be displayed in the language of the current user, a parametric query is required in the query property of the grid. Begin by inserting a string formatter with an identifier as localized text fields have a suffix that depends on the locale in which they are recorded by the logger.

A parametric query is required for displaying localized fields recorded in the store.

A localized parameter, for example Message, has a column in the store for each locale. These columns have a configurable format so a String Formatter can be used in the Query field to get the correct message for the current user.

In the Query field, create an advanced dynamic link, then create a string formatter. In the format field, insert the following string

SELECT ConditionName, Time, Severity, ActiveState_Id, AckedState_Id, ConfirmedState_Id, {0:sql_identifier} AS Message FROM "LoggerDegliEventi1"

Note

EventLogger1 or LoggerDegliEventi1 in the ‘’From’’ clause is the name of the event logger.

At the placeholder {0:sql_identifier} concatenate a second string formatter with the following format:

Create a new dynamic link between the placeholder of the second string formatter {0} and {Session}.User.LocaleIds[0] so when the user changes at runtime, the query is re-executed based on the current user’s locale.

Configuration of Columns in the Grid

An SQL alias was created in the previous query for the localized field Message. Although we refer to the Message alias in the query, depending on the locale of the current user, the Store is queried with Message_it-IT or Message_en-US.

The columns of the grid is generated automatically by dragging and dropping EventLogger1 onto the grid. The columns of the grids must be modified as all columns of EventLogger1 are shown automatically.

Delete one of the two localized columns, for example the Message_en-US column. Then rename the remaingin column, in this scenario, Message_it-IT and modify the properties DataItemTemplate > Text and Sort by from {Item}.Message_it-IT to {Item}.Message.

Running the Project

Before running the project, enter two users with different locales (in our case Alice will have the locale it-IT and John en-US) and add some translated alarm messages into the translation editor and note that when users log in, the data grid changes the message displayed depending on the location of the current user.

Scarica il progetto di esempio da qui.

See also

Concetti correlati

Logger

DataStore (database)

Event logger

Procedure correlate

Use the Event loggers