4.8.8.2. Viewing the Entity Log

The entity log content can be viewed on a dedicated screen available at Administration > Entity Log.

The change log for a certain entity can also be accessed from any application screen by loading a collection of EntityLogItem and the associated EntityLogAttr instances into the datasources and creating the visual components connected to these datasources. For example:

<dsContext>
    <datasource id="customerDs"
                class="com.sample.sales.entity.Customer"
                view="customerEdit"/>
    <collectionDatasource id="logDs"
                          class="com.haulmont.cuba.security.entity.EntityLogItem"
                          view="logView">
        <query>
            select i from sec$EntityLog i
            where i.entityRef.entityId = :ds$customerDs order by i.eventTs
        </query>
        <collectionDatasource id="logAttrDs"
                              property="attributes"/>
    </collectionDatasource>
</dsContext>
<layout>
...
<split orientation="vertical" width="100%" height="100%">

    <table id="logTable" width="100%" height="100%">
        <columns>
            <column id="eventTs"/>
            <column id="user.login"/>
            <column id="type"/>
        </columns>
        <rows datasource="logDs"/>
    </table>

    <table id="logAttrTable" width="100%" height="100%">
        <columns>
            <column id="name"/>
            <column id="value"/>
        </columns>
        <rows datasource="logAttrDs"/>
    </table>

</split>
...
</layout>

Logged attributes should contain the @LocalizedValue annotation in order to display localized values. When annotated, the logging mechanism populates the EntityLogAttr.messagesPack field, and the table in the example above is able to use locValue column instead of value:

<table id="logAttrTable" width="100%" height="100%">
  <columns>
      <column id="name"/>
      <column id="locValue"/>
  </columns>
  <rows datasource="logAttrDs"/>
</table>