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

# Logger

The `cyborg::Logger` class provides thread-safe logging capabilities for CyborgDB C++ operations. It follows a singleton pattern, allowing you to configure and access the same logger instance across your application.

## Configure Logger

```cpp theme={null}
void Configure(LogLevel level, 
               bool to_file, 
               const std::string& file_path = "");
```

Configures the logger with the specified log level and output options.

### Parameters

| Parameter   | Type                 | Default | Description                                                                                                                 |
| ----------- | -------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------- |
| `level`     | `LogLevel`           | -       | Log level enum value: `LogLevel::Debug`, `LogLevel::Info`, `LogLevel::Warning`, `LogLevel::Error`, or `LogLevel::Critical`. |
| `to_file`   | `bool`               | -       | Whether to write logs to a file instead of stdout/stderr.                                                                   |
| `file_path` | `const std::string&` | `""`    | *(Optional)* Path to the log file. Only used when `to_file` is `true`.                                                      |

### Exceptions

* If the file cannot be opened, logs will be written to standard output instead, and an error message will be printed to `std::cerr`.

### Example Usage

```cpp theme={null}
// Get the logger instance
cyborg::Logger& logger = cyborg::Logger::Instance();

// Configure logger to write INFO level logs to console
logger.Configure(LogLevel::Info, false);

// Configure logger to write ERROR level logs to a file
logger.Configure(LogLevel::Error, true, "/path/to/logs/cyborgdb.log");
```

<Tip>The `Debug` level is only available in debug builds of the library (compiled with the DEBUG flag).</Tip>
