MySQL Shell 8.4  /  MySQL Shell 日誌和偵錯  /  應用程式日誌

12.1 應用程式日誌

MySQL Shell 應用程式日誌檔案的位置是使用者組態路徑,檔案名稱為 mysqlsh.log。依預設,MySQL Shell 會將日誌層級 5 (錯誤、警告和資訊訊息) 的日誌資訊傳送至此檔案。

注意

日誌訊息的時間戳記採用 UTC 格式。

若要變更傳送的日誌資訊層級,或停用應用程式日誌檔案的記錄,請選擇下列其中一個選項

可用的日誌層級如表 12.1 「MySQL Shell 中的日誌層級」中所列。如果為選項指定日誌層級 1 或 none,則會停用寫入應用程式日誌檔案的記錄。所有其他值都會保持啟用記錄,並設定日誌檔案中的詳細程度。此選項需要值。

使用 --log-level 命令列選項,您可以使用其文字名稱或數字對等項目來指定日誌層級,因此下列範例具有相同的效果

$> mysqlsh --log-level=4
$> mysqlsh --log-level=warning

使用 logLevel MySQL Shell 組態選項,您只能指定數字日誌層級。

如果您在日誌層級前面加上 @ (小老鼠符號),則除了寫入 MySQL Shell 日誌檔案外,日誌項目也會輸出到其他可檢視的位置。下列範例具有相同的效果

$> mysqlsh --log-level=@8
$> mysqlsh --log-level=@debug3

在以 Unix 為基礎的系統上,日誌項目會以目前為 MySQL Shell 設定的輸出格式輸出到 stderr。這是 resultFormat MySQL Shell 組態選項的值,除非透過使用 --json 命令列選項啟動 MySQL Shell 來啟用 JSON 包裝。

在 Windows 系統上,日誌項目會使用 OutputDebugString() 函數列印,其輸出可以在應用程式偵錯工具、系統偵錯工具或偵錯輸出擷取工具中檢視。

MySQL Shell 日誌檔案格式為純文字,項目包含時間戳記和問題描述,以及上述清單中的日誌層級。例如

2016-04-05 22:23:01: Error: Default Domain: (shell):1:8: MySQLError: You have an error
in your SQL syntax; check the manual that corresponds to your MySQL server version for
the right syntax to use near '' at line 1 (1064) in session.sql("select * from t
limit").execute().all();

Windows 上的日誌檔案位置

在 Windows 上,應用程式日誌檔案的預設路徑是 %APPDATA%\MySQL\mysqlsh\mysqlsh.log。若要尋找系統上的 %APPDATA% 位置,請從命令列加以回應。例如

C:>echo %APPDATA%

C:\Users\exampleuser\AppData\Roaming

在 Windows 上,路徑是使用者專屬的 %APPDATA% 資料夾,並新增 MySQL\mysqlsh。使用上述範例,路徑將會是 C:\Users\exampleuser\AppData\Roaming\MySQL\mysqlsh\mysqlsh.log

如果您希望將應用程式日誌檔案儲存在不同的位置,您可以定義環境變數 MYSQLSH_USER_CONFIG_HOME 來覆寫預設的使用者組態路徑。此變數的值會取代 Windows 上的 %AppData%\MySQL\mysqlsh\

您也可以在從命令列執行 mysqlsh 時,使用 --log-file 選項來覆寫使用者組態路徑。--log-file 選項會套用至個別的 MySQL Shell 執行個體,這表示不同的執行個體可以寫入不同的位置。

以 Unix 為基礎的系統上的日誌檔案位置

對於執行 Unix 的電腦,應用程式日誌檔案的預設路徑是 ~/.mysqlsh/mysqlsh.log,其中 ~代表使用者的主目錄。環境變數 HOME 也代表使用者的主目錄。將 .mysqlsh 附加到使用者的主目錄會決定日誌的預設路徑。

如果您希望將應用程式日誌檔案儲存在不同的位置,您可以定義環境變數 MYSQLSH_USER_CONFIG_HOME 來覆寫預設的使用者組態路徑。此變數的值會取代 Unix 上的 ~/.mysqlsh/

您也可以在從命令列執行 mysqlsh 時,使用 --log-file 選項來覆寫使用者組態路徑。--log-file 選項會套用至個別的 MySQL Shell 執行個體,這表示不同的執行個體可以寫入不同的位置。