Google Apps Script Better Logger
一個比原生 console.log 好一些的 Logger
可以用 sheet、Stackdriver Logging 紀錄,還可以用 mail 通知
A Logger which better than built-in console.log .
You can use sheet, Stackdriver Logging records, you can also use mail to notify.
目錄 index
- 如何使用 Getting Started
- 概觀 Overview
- 功能詳細說明 Methods Detailed description
- 元件說明 Component Description
- 待做 TODO
如何使用 Getting Started
安裝(install)
Google Apps Script Library install
打開 gs 編輯頁面
-> "資源"
-> "程式庫"
-> 將 1R4kOenBr5gSIcxUbCYegM4pStj0JzjXdA2jryW5s9J2Phg_ebaykmEgo
貼上輸入框
-> "新增"
-> 選擇最後版本(記得阿 不然儲存不了)
-> "儲存"~
Open Script Editor.
-> Resource
-> Library
-> Paste Script ID 1R4kOenBr5gSIcxUbCYegM4pStj0JzjXdA2jryW5s9J2Phg_ebaykmEgo
to box
-> Add library
-> select lastest version and save
npm install
npm i google-apps-script-better-logger
⚠️npm 安裝僅提供輸入提示,並無法在 local 端執行!⚠️
⚠️npm install only support IDE input prompt, can't run code on local!⚠️
一般使用(General use)
code:
{ console; var logger = ; var levels = loggerlevels; logger; console; // 有2種方式可以log 這是第1種 // have 2 method , this 1 logger; logger; logger; logger; logger; logger; logger; logger; // 這是第2種 // this 2 logger; logger; logger; logger; logger; logger; logger; logger;}
result:
使用 sheet (use sheet)
code:
{ console; var logger = ; var levels = loggerlevels; // 設定要 log 的 sheet page // set need to log sheet page logger; // 啟動 sheet 紀錄 // Turn on sheet log logger; logger; console; logger; logger; logger; logger; logger; logger; logger; logger;}
result:
使用 mail 通知(use mail notice)
code:
{ console; var logger = ; console; logger; // 啟動 mail 通知 (在沒有特別設定的情況下,只有 EMERGENCY、ALERT、NOTICE 3個會通知) // Turn on mail notice, if you not change setting, only EMERGENCY、ALERT、NOTICE will notice logger; // 這裡填寫你的程式名稱 寄信時當作標題用 // there fill in the name of your program , will use it as the title when sending a mail. loggerapplication = "這裡填你的應用程式名稱"; logger; logger; logger; logger; logger; logger; logger; logger;}
result:
概觀 Overview
功能 Methods | 說明 Explanation |
---|---|
set_config | 一次設定 Logger 所有參數。 Set Logger all config |
set_logfmt | 設定 Logger 的時間格式 Set Logger time format |
set_GMT | 設定 Logger 時區,單位 GMT Set Logger time zone, unit GMT |
set_use_console | 設定是否啟用 Stackdriver Logging,預設開啟 Set whether to enable Stackdriver Logging, the default is on |
set_use_sheet | 設定是否啟用 sheet,預設關閉 Set whether to enable sheet, the default is off |
set_sheet_id | 設定要使用的 sheet id Set the sheet id |
set_sheet_page_name | 設定要使用的 sheet page,預設為 'log' Set the sheet page to use, the default is 'log' |
set_sheet_log_slice | 設定 log 進 sheet 時,要不要分欄輸入(A 欄、B 欄...) When log into the sheet, do you want to enter it in a columns or separate(Column A, Column B...) |
set_level | 設定紀錄的等級 Set the record level |
set_EMERGENCY_color | 設定 EMERGENCY 紀錄在 sheet 時的單元格顏色 Set the cell color when EMERGENCY is recorded in sheet |
set_ALERT_color | 設定 ALERT 紀錄在 sheet 時的單元格顏色 Set the cell color when ALERT is recorded in sheet |
set_CRITICAL_color | 設定 CRITICAL 紀錄在 sheet 時的單元格顏色 Set the cell color when CRITICAL is recorded in sheet |
set_ERROR_color | 設定 ERROR 紀錄在 sheet 時的單元格顏色 Set the cell color when ERROR is recorded in sheet |
set_WARNING_color | 設定 WARNING 紀錄在 sheet 時的單元格顏色 Set the cell color when WARNING is recorded in sheet |
set_INFO_color | 設定 INFO 紀錄在 sheet 時的單元格顏色 Set the cell color when INFO is recorded in sheet |
set_DEBUG_color | 設定 DEBUG 紀錄在 sheet 時的單元格顏色 Set the cell color when DEBUG is recorded in sheet |
set_NOTICE_color | 設定 NOTICE 紀錄在 sheet 時的單元格顏色 Set the cell color when NOTICE is recorded in sheet |
set_use_mail | 設定是否要寄 email Set whether to send email |
set_EMERGENCY_mail | 設定遇到 log 等級 EMERGENCY 時,是否要寄送 mail,預設 true Set whether to send mail when encountering log level EMERGENCY,the default is true |
set_ALERT_mail | 設定遇到 log 等級 ALERT 時,是否要寄送 mail,預設 true Set whether to send mail when encountering log level ALERT,the default is true |
set_CRITICAL_mail | 設定遇到 log 等級 CRITICAL 時,是否要寄送 mail,預設 false Set whether to send mail when encountering log level CRITICAL,the default is false |
set_ERROR_mail | 設定遇到 log 等級 ERROR 時,是否要寄送 mail,預設 false Set whether to send mail when encountering log level ERROR,the default is false |
set_WARNING_mail | 設定遇到 log 等級 WARNING 時,是否要寄送 mail,預設 false Set whether to send mail when encountering log level WARNING,the default is false |
set_INFO_mail | 設定遇到 log 等級 INFO 時,是否要寄送 mail,預設 false Set whether to send mail when encountering log level INFO,the default is false |
set_DEBUG_mail | 設定遇到 log 等級 DEBUG 時,是否要寄送 mail,預設 false Set whether to send mail when encountering log level DEBUG,the default is false |
set_NOTICE_mail | 設定遇到 log 等級 NOTICE 時,是否要寄送 mail,預設 true Set whether to send mail when encountering log level NOTICE,the default is true |
set_application | 設定程式名稱 set application name |
log | 紀錄 log 用 For logging |
emergency | 使用 emergency log use emergency log |
alert | 使用 alert log use alert log |
critical | 使用 critical log use critical log |
error | 使用 error log use error log |
warning | 使用 warning log use warning log |
info | 使用 info log use info log |
debug | 使用 debug log use debug log |
notice | 使用 notice log use notice log |
功能詳細說明 Function Description
set_config
設定 Logger。
;
Return
void
Parameters
name | type | Description |
---|---|---|
sheet_id | string | https://docs.google.com/spreadsheets/d/ 1lqlqztKroBwDZ--VxoYN9Hh_BuwOzbdbowltI7yf2N4 /edit 網址中的這一段 (介於 "d/" 跟 "/edit" 之間) |
sheet_page_name | string | 使用 sheet 中的哪個 page,預設是'log' |
logfmt | string | logger 的 log 格式 |
GMT | string | GMT 時間 |
datefmt | string | logger 的 log 格式中 時間的紀錄方式 |
level | string | number | Levels | 紀錄的等級,可以接受 'EMERGENCY'、60、logger.levels.NOTICE 這 3 種方式 |
Explanation
{ var logger = ; logger; console;}
set_logfmt
設定 log 格式。
;
Return
void
Parameters
name | type | Description |
---|---|---|
logfmt | string | logger 的 log 格式 |
Explanation
{ var logger = ; logger; console;}
set_GMT
設定 Logger GMT 時區。
;
Return
void
Parameters
name | type | Description |
---|---|---|
GMT | string | GMT 時區 |
Explanation
{ var logger = ; logger; console;}
set_use_console
用來開關 Stackdriver Logging,預設 true。
;
Return
void
Parameters
name | type | Description |
---|---|---|
boolean | boolean | true or false |
Explanation
{ var logger = ; logger; console;}
set_use_sheet
用來開關 sheet log,預設 false。
;
Return
void
Parameters
name | type | Description |
---|---|---|
boolean | boolean | true or false |
Explanation
{ var logger = ; logger; console;}
set_sheet_id
用來設定 sheet id。
;
Return
void
Parameters
name | type | Description |
---|---|---|
id | string | https://docs.google.com/spreadsheets/d/ 1lqlqztKroBwDZ--VxoYN9Hh_BuwOzbdbowltI7yf2N4 /edit 網址中的這一段 (介於 "d/" 跟 "/edit" 之間) |
Explanation
{ var logger = ; logger; console;}
set_sheet_page_name
用來設定 sheet page name。
如果沒有在 sheet 中發現指定的 page 名稱,則會自己新增一個。
;
Return
void
Parameters
name | type | Description |
---|---|---|
page_name | string | 使用 sheet 中的哪個 page,預設是'log' |
Explanation
{ var logger = ; logger; console;}
set_sheet_log_slice
設定 log 進 sheet 時,要不要分欄輸入(A 欄、B 欄...)
如果是 false 就只輸出 1 欄。
;
Return
void
Parameters
name | type | Description |
---|---|---|
boolean | boolean | 設定 log 進 sheet 時,要不要分欄輸入(A 欄、B 欄...) |
Explanation
{ var logger = ; logger; console;}
set_level
設定 log level。
;
Return
void
Parameters
name | type | Description |
---|---|---|
level | string | number | Levels | 紀錄的等級,可以接受 'EMERGENCY'、60、logger.levels.NOTICE 這 3 種方式 |
Explanation
{ var logger = ; logger; console;}
set_XXX_color
設定 XXX 在 sheet log 時的顏色。
;
Return
void
Parameters
name | type | Description |
---|---|---|
color | string | 十六進位字串顏色 |
Explanation
{ var logger = ; logger; logger; logger;}
set_use_mail
設定是否在 log 時寄送 eamil。
預設是 false .
;
Return
void
Parameters
name | type | Description |
---|---|---|
boolean | boolean | true of false |
Explanation
{ var logger = ; logger; logger;}
set_XXX_mail
設定指定 log level 是否寄送 Email。 如果未指定,則只有 EMERGENCY、ALERT、NOTICE 這三個會寄送。詳見Levels
;
Return
void
Parameters
name | type | Description |
---|---|---|
boolean | boolean | true of false |
Explanation
{ var logger = ; logger; logger;}
set_application
設定指定寄送 Email 時,標題的名稱。 預設 "Google_Apps_Script_Logger"。
;
Return
void
Parameters
name | type | Description |
---|---|---|
subject | string | 寄信時的標題名稱 |
Explanation
{ var logger = ; logger; logger;}
元件說明 Component Description
logfmt
logfmt 預設是 "%{datefmt} - %{user} - %{levelname} : %{message}"
種類
名稱 | 說明 |
---|---|
datefmt | 是時間格式化後的字串,詳見datefmt |
user | 為使用這個 Logger 的 google 帳號 (xxx@gmail.com) |
levelname | 是 log 的等級,詳見levels |
message | 是你想記錄的訊息文字 |
datefmt
datefmt 預設是 "yyyy.MM.dd HH:mm:ss z" 詳細請看 SimpleDateFormat
Levels
名稱 | 等級 | 說明 | 預設是否寄 email |
---|---|---|---|
EMERGENCY | 70 | 緊急 | ✓ |
ALERT | 60 | 快訊 | ✓ |
CRITICAL | 50 | 重要 | ✖ |
ERROR | 40 | 錯誤 | ✖ |
WARNING | 30 | 警告 | ✖ |
INFO | 20 | 資訊 | ✖ |
DEBUG | 10 | 除錯 | ✖ |
NOTICE | 0 | 通知 | ✓ |
待做 TODO
- 將 log level 完整對應到 Stackdriver Logging 上,不再用其他代替
- 考慮做 file 版記錄方式
- sheet log 是否要做分天、月 log?