MySQL Shell 9.0  /  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 執行個體,這表示不同的執行個體可以寫入不同的位置。