# Log storage

> Robot log storage options: Orchestrator-connected storage with local fallback, and NLog-based file configuration using the NLog.config file.

## Orchestrator storage

When the Robot is connected to Orchestrator, only logs matching the level set in Assistant or Orchestrator appear on the [Logs](https://docs.uipath.com/orchestrator/automation-cloud/latest/user-guide/about-logs) page. If Orchestrator is unavailable, [logs are stored in a local path](https://docs.uipath.com/robot/standalone/2026.10/admin-guide/log-storage#log-storage-by-robot-mode) - `C:\Windows\System32\config\systemprofile\AppData\Local\UiPath\Logs\execution_log_data`, within the available disk space, until the connection is restored. When the connection is restored, the logs are sent in batches in the order they had been generated.

## NLog storage

:::important
The Robot update overwrites and resets these files, removing any prior edits.
:::

Additionally, you can configure log storage by editing the NLog configuration files. Both files are in the Robot installation folder: `%ProgramFiles%\UiPathPlatform\Robot\<version>` for a per-machine installation, or `%LocalAppData%\Programs\UiPathPlatform\Robot\<version>` for a per-user installation.

* `NLog.config` configures the execution logs. By default, the Robot stores execution logs in a file in the `%LocalAppData%\UiPath\Logs` folder. The messages are collected by the **WorkflowLogging** logger and can be forwarded by using [NLog targets](https://github.com/nlog/nlog/wiki/Targets).
* `Robot.NLog.config` configures the diagnostic logs, which the Robot writes to `Robot.log`.

The shipped `NLog.config` file looks as follows:

```
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoShutdown="true"
      internalLogLevel="warn">
  <variable name="WorkflowLoggingDirectory" value="${specialfolder:folder=LocalApplicationData}/UiPath/Logs" />
  <rules>
    <logger name="WorkflowLogging" writeTo="asyncFile" final="true" />
  </rules>
  <targets>
    <target type="AsyncWrapper"
            name="asyncFile"
            queueLimit="1000"
            batchSize="100"
            timeToSleepBetweenBatches="0"
            overflowAction="Block">
      <target type="File"
          name="WorkflowLogFiles"
          fileName="${WorkflowLoggingDirectory}/${shortdate}_Execution.log"
          layout="${time} ${level} ${message}"
          keepFileOpen="true"
          maxArchiveFiles="30"
          openFileCacheTimeout="5"
          concurrentWrites="true"
          forceMutexConcurrentWrites="true"
          encoding="utf-8"
          writeBom="true" />
    </target>
  </targets>
</nlog>
```

## Log storage by Robot mode

Robot logs are stored differently, based on the user running the automation, which can be the local user (for User Mode robots), or the Local System user (for Service Mode robots):

### Execution logs in `.log` format
* Service mode:
  + Windows OS—`C:\Users\user\AppData\Local\UiPath\Logs`
* User mode:
  + Windows OS—`%LocalAppData%\UiPath\Logs`
  + Linux—`~/.local/share/UiPath/Logs`

### Execution logs in LiteDB format
* Service mode:
  + Windows OS—`C:\Windows\System32\config\systemprofile\AppData\Local\UiPath\Logs\execution_log_data`
* User mode:
  + Windows OS—`%LocalAppData%\UiPath\Logs\execution_log_data`
  + Linux—`~/.local/share/UiPath/Logs/execution_log_data`

### Diagnostic (or internal) logs
* Service mode:
  + Windows OS—`%ProgramData%\UiPath\Logs\internal`
* User mode:
  + Windows OS—`%LocalAppData%\UiPath\Logs\internal`
  + Linux—`~/.local/share/UiPath/Logs/internal`
