# Logging and Log Levels

> During process execution, the **Robot** generates a message (**Log**) for each step along the way. These are gathered and stored in a **Log File**. The overall operation of gathering and storing **Logs** is called **Logging**.

During process execution, the **Robot** generates a message (**Log**) for each step along the way. These are gathered and stored in a **Log File**. The overall operation of gathering and storing **Logs** is called **Logging**.

Each **Log** has a **Log Level**, which refers to how detailed the generated message is.

**Logging Levels** refer to the type of severity written in the **Log File**.

## Log Levels in UiPath

| Log Level | Logged | Example / Comment | Log File | Output Panel | Orchestrator Log page |
| --- | --- | --- | --- | --- | --- |
| **Verbose** | **Activities** | **Trace {"message":{"DisplayName":"Message box","State":"Executing","Activity":"UiPath.Dialog.Activities.MessageBox","Arguments":{"Caption":"","Text":"String in message BOX"}...****Trace {"message":{"DisplayName":"Message box","State":"Closed","Activity":"UiPath.Dialog.Activities.MessageBox","Arguments":{"Caption":"","Text":"String in message BOX","ChosenButton":"Ok"}** | Yes | No | Yes |
| **Verbose** | **Variables** | **"Variables":{"NewTransaction":"False"}}** | Yes | No | Yes |
| **Verbose** | **Arguments (properties)** | **"Arguments":{"Caption":"","Text":"String in message BOX","ChosenButton":"Ok"}** | Yes | No | Yes |
| **Trace** | **Activities** | **Trace {"message":{"DisplayName":"Main","State":"Executing","Activity":"System.Activities.DynamicActivity"}****Trace {"message":{"DisplayName":"Main","State":"Executing","Activity":"System.Activities.Statements.Flowchart"}** | Yes | No | Yes |
| **Trace** | **WriteLine** | **Trace {"message":"write","level":"Trace","logType":"User","timeStamp":"","fingerprint":"","windowsIdentity":"","machineName":"","processName":"New Process","processVersion":"","jobId":"","robotName":"","machineId":,"organizationUnitId":}** | Yes | Yes | Yes |
| **Information** | **Log Message** | **Info {"message":"message from activity"****Note:** Except messages logged with Trace level set in activity. |  |  |  |
| **Warning** | **Warnings** | **Warn {"message":"Warning from log message activity"** | Yes | Yes | Yes |
| **Warning** | **Errors** | **Error {"message":"Error from log message activity"** | Yes | Yes | Yes |
| **Warning** | **Critical** | Critical Errors | Yes | Yes | Yes |
| **Error** | **Errors** | **Error {"message":"Error from log message activity"** | Yes | Yes | Yes |
| **Error** | **CriticalFatal** | Critical Errors | Yes | Yes | Yes |
| **Critical** | **CriticalFatal** | Critical Errors | Yes | Yes | Yes |
| **OFF** | n/a | n/a | No | No | No |

## Logging Levels in UiPath

| Logging Level | Default Logs | User-Defined Logs |
| --- | --- | --- |
| **Off** | None | None |
| **Critical** | All messages logged with Critical level or higher. | All messages logged with Critical level or higher. |
| **Error** | All messages logged with Error level or higher. | All messages logged with Error level or higher. |
| **Warning** | All messages logged with Warning or higher. | All messages logged with Warning or higher. |
| **Information** | All messages logged with Information or higher. | All messages logged with Information or higher. |
| **Trace** | All messages logged with Trace level or higher. | All messages logged with Trace level or higher. |
| **Verbose** | All messages logged with Trace level and Workflow Tracking logs. | All messages logged with Trace level. |

The **Verbose** level logs a message for both the activity **start** and **end**, plus the values of the variables and arguments that are used.

By default, the **Verbose** level includes:

* **Execution Started** log entry - generated every time a process is started.
* **Execution Ended** log entry - generated every time a process is finalized.
* **Transaction Started** log entry - generated every time a transaction item is obtained by the Robot from Orchestrator.
* **Transaction Ended** log entry - generated every time the Robot sets the transaction status to either Success or Failed.
* **Activity Information** log entry - generated every time an activity is **started**,**faulted** or **finished** inside a process.

  :::note
  The priority order of the log types is: **Verbose** &lt; **Trace** &lt; **Information** &lt; **Warning** &lt; **Error** &lt; **Critical** &lt; **Off**.
  :::

## About PII Information in Logs

### `Information`, `Warning`, `Error`, and `Critical`

The values of input/output arguments are not tracked when `Information`, `Warning`, `Error`, and `Critical` log levels are used. This means no PII information is sent in the Orchestrator logs unless explicitly added from Studio.

### `Trace` and `Verbose`

`Trace` and `Verbose` log levels track and write the values of input/output arguments in Orchestrator logs. If those values include PII information, they are added to the Orchestrator logs.

### Using `excludeLoggedData` to Hide Sensitive Information

The `excludedLoggedData` variable allows you to add keywords to prevent variable and argument values from being logged at the Verbose level.

That can also be achieved by selecting the `Private` checkbox of any activity. Read more about the protection of sensitive information [here](https://docs.uipath.com/studio/v2021.10/docs/protecting-sensitive-information).

```
"excludedLoggedData": [
      "Private:*",
      "password"
    ],
```

## Log Types

There are several possible occurrences of log messages, depending on the event that is logged, as follows:

### Default

Generated by default when the execution of a process starts and ends, when a system error occurs and the execution stops, or when the logging settings are configured to log the execution of every activity.

:::note
These logs have the `Default` value in the `logType` field.
:::

The events logged by this category are:

* **Execution Start** is generated every time a process is started. This is logged starting with the **Information** logging level.
* **Execution End** is generated every time a process is finalized. This is logged starting with the **Information** logging level.
* **Transaction Start** is generated every time a transaction within a process is started. This is logged starting with the **Information** logging level.
* **Transaction End** is generated every time a transaction within a process is finalized. This is logged starting with the **Information** logging level.
* **Error Log** is generated every time the execution encounters an error and stops. This is logged starting with the **Error** logging level.
* **Debugging Log** is generated if the Robot Logging Setting is set to Verbose and contains activity names, types, variable values, arguments, etc. This is logged starting with the **Trace** logging level.

### User-Defined

Generated according to the process designed by the user in Studio, when using the **Log Message** activity or the **Write Line** activity.

:::note
These logs have the `User` value in the `logType` field.
:::

## Log Fields

There are multiple types of log fields that can be found throughout the above log message types. These can be classified as follows:

### Default fields

* Message - The log message.
* Level - Defines the log severity.
* Timestamp - The exact date and time the action was performed.
* FileName - The name of the `.xaml` file being executed.
* jobId - The key of the job running the process.
* processName - The name of the process that triggered the logging.
* processVersion - The version number of the process.
* windowsIdentity - The name of the user that performed the action that was logged.
* robotName - The name of the Robot (as defined in Orchestrator).

  :::note
  The `processName` and `processVersion` fields do not appear in logs if the process is run locally, without being connected to Orchestrator.
  :::

### Type-specific fields

These logs are present depending on the log type.

**Execution End**

* totalExecutionTimeInSeconds
* totalExecutionTime

**Transaction Start**

* queueName
* transactionID
* transactionState

**Transaction End**

* queueName
* transactionID
* transactionState
* transactionStatus
* transactionExecutionTime
* processingExceptionType
* processingExceptionReason
* queueItemReviewStatus
* queueItemPriority

**Debugging Log**

`activityInfo`, which is a JSON message with the following fields:

* DisplayName
* State (Faulted, Closed, Executing)
* Activity
* Arguments

:::note
Only `totalExecutionTimeInSeconds`, `totalExecutionTime` and `queueName` are always present in the log messages. `Variables` and `Arguments` usually have sub-fields.
:::

### User-defined fields

These fields are defined in Studio by using the **Add Log Fields** activity and appear in all subsequent logs after the activity is generated, unless they are removed by the **Remove Log Fields** activity.

:::note
When defining **Custom Log Fields** make sure to also check the naming against the **Default Log Fields** to avoid conflicting information in the **Log Files** over the same **Log Fields** or corrupt log files. Having the same naming convention for both **Custom** and **Default** Log Fields can also impact the Process you are running.
:::
