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

# SDK 日志生成

日志记录可以让您了解 SDK 正在做什么,以及它如何与外围设备通信。它是 Nayax 诊断 SDK 自身行为问题以及 SDK 与外围设备之间连接问题的主要工具。

## 配置

要生成 SDK 日志,请在 `main` 方法中配置两个标志。`debug` 是一个布尔值,用于开启或关闭日志生成。`vmc_configuration` 中的 `dump_packets_level` 用于设置 SDK 记录日志的详细程度:

| 值 | 记录内容 |
| - | - |
| `debug_level_dump_none` | 不记录任何内容,不生成日志。 |
| `debug_level_dump_all` | 所有消息。 |
| `debug_level_dump_moderate` | 除保活消息(keep-alive)及其 ACK 之外的所有消息。 |

以下示例同时设置了这两个标志。

<CodeGroup>
  ```java Java theme={null}
  public static void main(String[] args) {
      vmc_config.dump_packets_level = vmc_configuration.debug_level_dump_moderate;
      vmc_config.debug = true;
  }
  ```

  ```csharp C# theme={null}
  public class vend_machine
  {
      public static void Main(string[] args)
      {
          vmc_config.debug = true;
          vmc_config.dump_packets_level = vmc_configuration.debug_level_dump_moderate;
      }
  }
  ```

  ```c C theme={null}
  vmc_init()
  	config.dump_packets_level = debug_level_dump_none;
  ```
</CodeGroup>

## 日志文件位置

SDK 写入日志文件的位置取决于您使用的 SDK:

* 在 **C# SDK** 上,日志会自动保存到您运行 SDK 的目录下的 `bin\Debug` 文件夹中。例如:

  <Frame>
    <img src="https://mintcdn.com/nayax-44d6e37b/27KIupf5oHU9adsO/images/docs/log-generation/image1.jpg?fit=max&auto=format&n=27KIupf5oHU9adsO&q=85&s=bfb8723d99bfcda1406cc1b9b2f8b0bf" width="272" height="182" data-path="images/docs/log-generation/image1.jpg" />
  </Frame>

* 在 **C SDK** 上,通过调用以下函数来设置日志位置。

  ```c C theme={null}
  printk_register_puts(terminal_tx_str);
  ```

  SDK 会将其日志输出发送到您配置的任何板卡或控制台。写入位置由您决定:

  * 命令行,如下面的 x86/Linux 示例所示。
  * UART 端口,如下面的 STM 示例所示。
  * 您选择的任何其他目标位置。

  ```c C theme={null}
  static void terminal_tx_str(char *str)
  {
      #if defined(__PLATFORM_X86) || defined(__PLATFORM_LINUX)
          printf("%s", str);
      #elif defined(__PLATFORM_STM32)
          drv_usart_tx_data(&terminal_usart, (uint8_t*)str, strlen(str));
      #endif
  }
  ```

  C SDK 的演示应用程序默认将日志生成到命令行。

* 在 **Java SDK** 上,在 `FileWriter` 初始化时设置默认日志文件路径,如下所示:

  ```java Java theme={null}
  if (vmc_config.debug) {
    BufferedWriter out = null;
    try {
        FileWriter fstream = new FileWriter("c:\\out.txt", true); // true to append data
        out = new BufferedWriter(fstream);
        Log.initialize(out);
    } catch (Exception ex) {
        // Handle exception
    }
  }
  ```

  在上面的示例中,日志文件在 `C:` 盘根目录下创建,文件名为 `out.txt`。`FileWriter` 构造函数中的 `true` 参数表示将新数据追加到现有日志文件,而不是覆盖它。

## 另请参阅

<Card icon="magnifying-glass-chart" title="Log Trace Comparator" href="/docs/integrate-pos-device/marshall/log-analysis/log-trace-comparator">
  获得日志后,使用此工具将其与已知正常的参考跟踪记录进行比对。
</Card>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.