Wednesday, 17 January 2018




How To Setup Database Log in AX 2012 using manually/using X++ Code for single Table/using X++ Code for all Table.

using Manually:
step1 :  select System Administration -> setup -> Database -> Database log Setup



Step2 : when you click you will see this -> click on new



Step3: you will popup with wizard database logging -> Click on Next



Step4: select you table from here -> then click on Next



Step5: select tick in insert ,update, delete, according to you requirement. it is basically when        someone  insert , delete or update any record it will show in log. -> after that click on next



Step6: it will show how many tables you have selected and what command you have selected



once it done then check your select table in same place setup -> database-> database log setup
here you can find all changes which you have done.

now go to -> inquery-> database log (here you can check all the logs.


using X++ code for one table

Static Void aks_DBlogging(Args _args)
{
TableId tableId = tableNum(InventItemSalesSetup);
    DatabaseLog log;
    SysDictTable dictT = new SysDictTable(tableId);
    SysDictField dictF;
    Set fields;
    SetEnumerator   se;
    log.logType = DatabaseLogType::Update;
    log.logTable = tableId;
    fields = dictT.fields(false,false,true);
    se = fields.getEnumerator();
 
    while (se.moveNext())
    {
        dictF = se.current();
        log.logField = dictF.id();
        log.insert();
        info(strFmt("Adding field %1", dictF.name()));
    }
    SysFlushDatabaselogSetup::main();
}

using X++ code for All Table


static void aks_DBlogging(Args _args)
{
   tableId         tableId;
    int             tablecounter;
    DatabaseLog log;
    SysDictTable dictT;
    SysDictField dictF;
    Set fields;
    SetEnumerator   se;
    Dictionary      dict = new Dictionary();

    for (tablecounter=1; tablecounter<=dict.tableCnt(); tablecounter++)
    {
        tableId = dict.tableCnt2Id(tablecounter);

     // TableId tableId = tableNum(InventItemSalesSetup);

     dictT = new SysDictTable(tableId);

    log.logType = DatabaseLogType::Update;
    log.logTable = tableId;
    fields = dictT.fields(false,false,true);
    se = fields.getEnumerator();
    while (se.moveNext())
    {
        dictF = se.current();

        log.logField = dictF.id();
        log.insert();
        info(strFmt("Adding field %1", dictF.name()));
    }
    }
    SysFlushDatabaselogSetup::main();
 
}