> ## Documentation Index
> Fetch the complete documentation index at: https://docs.superoffice.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Logging in CRMScript

> A SearchEngine helper-method for CRMScript logging.

By default, CRMScript has its own [log][1] method, which takes a String message and saves it in [log\_events][2].

The table has a few more fields that can be utilized, but it requires a helper-method that inserts the data into the table, using the SearchEngine:

```crmscript theme={null}
Void log( Integer id, Integer eventType, String var1, String var2, String var3, String var4, String var5 ) {
    SearchEngine se;
    se.addData( "log_events.time_of_event", getCurrentDateTime().toString() );
    se.addData( "log_events.event_type", eventType.toString() );
    se.addData( "log_events.event_group", "13" ); // GroupEjscript
    se.addData( "log_events.target_id", id.toString() );
    se.addData( "log_events.var1", var1 );
    se.addData( "log_events.var2", var2 );

    if( !var3.isEmpty() )
        se.addData( "log_events.var3", var3 );
    if( !var4.isEmpty() )
        se.addData( "log_events.var4", var4 );
    if( !var5.isEmpty() )
        se.addData( "log_events.var5", var5 );
    se.insert();
}

Void log( Integer id, Integer eventType, String var1, String var2, String var3, String var4 ){ log( id, eventType, var1, var2, var3, var4, "" ); }
Void log( Integer id, Integer eventType, String var1, String var2, String var3 )             { log( id, eventType, var1, var2, var3, "", "" ); }
Void log( Integer id, Integer eventType, String var1, String var2 )                          { log( id, eventType, var1, var2, "", "", "" ); }
Void log( Integer id, Integer eventType, String var1 )                                       { log( id, eventType, var1, "", "", "", "" ); }

Void log( Integer eventType, String var1, String var2, String var3, String var4, String var5 ){ log( 0, eventType, var1, var2, var3, var4, var5 ); }
Void log( Integer eventType, String var1, String var2, String var3, String var4 )             { log( 0, eventType, var1, var2, var3, var4, "" ); }
Void log( Integer eventType, String var1, String var2, String var3 )                          { log( 0, eventType, var1, var2, var3, "", "" ); }
Void log( Integer eventType, String var1, String var2 )                                       { log( 0, eventType, var1, var2, "", "", "" ); }

Void log( String var1, String var2, String var3, String var4, String var5 ){ log( 0, 0, var1, var2, var3, var4, var5 ); }
Void log( String var1, String var2, String var3, String var4 )             { log( 0, 0, var1, var2, var3, var4, "" ); }
Void log( String var1, String var2, String var3 )                          { log( 0, 0, var1, var2, var3, "", "" ); }
Void log( String var1, String var2 )                                       { log( 0, 0, var1, var2, "", "", "" ); }
```

## Event Type

| Event Type             | Value |
| ---------------------- | :---: |
| EventTypeEvent         |   1   |
| EventTypeNotification  |   2   |
| EventTypeWarning       |   3   |
| EventTypeError         |   4   |
| EventTypeCriticalError |   5   |

## Event Group

| Event Group        | Value |
| ------------------ | :---: |
| GroupAll           |   0   |
| GroupCustomer      |   1   |
| GroupTicket        |   2   |
| GroupUser          |   3   |
| GroupSystem        |   4   |
| GroupCompany       |   5   |
| GroupPriority      |   6   |
| GroupCategory      |   7   |
| GroupReplyTemplate |   8   |
| GroupSearch        |   9   |
| GroupExtraTable    |   10  |
| GroupSoap          |   11  |
| GroupEmail         |   12  |
| GroupEjscript      |   13  |
| GroupDbi           |   14  |

## Usage

For the helper-method to be re-useable, add it as its own CRMScript.

1. Give the script it's own includeId, for instance `lib-log`.
2. Write `#include 'lib-log';` at the top of the new script.
3. Use one of the included methods, for instance `log(406, 3, "foo");`.

To view the contents of the log, go to **System design** > **Debug log**

[1]: ./log-messages

[2]: /en/database/tables/log-events


## Related topics

- [Building custom REST API methods using CRMScript](/en/automation/crmscript/tutorials/build-custom-rest-api-methods.md)
- [SuperOffice.Logging](/en/onsite/logging/standard-netserver-log.md)
- [Logging in NetServer](/en/onsite/logging/index.md)
- [Ticket](/en/automation/crmscript/reference/CRMScript.Native.Ticket.md)
- [NSEMailConnectionInfo](/en/automation/crmscript/reference/CRMScript.NetServer.NSEMailConnectionInfo.md)
- [Message](/en/automation/crmscript/reference/CRMScript.Native.Message.md)
