google-apps-script-better-logger
v0.1.4
Published
On google apps script use better logger. this package just a Better-Logger type assist.
Downloads
9
Maintainers
Readme
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
安裝(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:
function t2() {
console.log("---------------------");
var logger = new BetterLogger.BetterLogger();
var levels = logger.levels;
logger.set_level(logger.levels.NOTICE);
console.log(logger.get_config());
// 有2種方式可以log 這是第1種
// have 2 method , this 1
logger.log(levels.EMERGENCY, "這是測試 EMERGENCY !!!!!");
logger.log(levels.ALERT, "這是測試 ALERT !!!!!");
logger.log(levels.CRITICAL, "這是測試 CRITICAL !!!!!");
logger.log(levels.ERROR, "這是測試 ERROR !!!!!");
logger.log(levels.WARNING, "這是測試 WARNING !!!!!");
logger.log(levels.INFO, "這是測試 INFO !!!!!");
logger.log(levels.DEBUG, "這是測試 DEBUG !!!!!");
logger.log(levels.NOTICE, "這是測試 NOTICE !!!!!");
// 這是第2種
// this 2
logger.emergency("這是測試 EMERGENCY =====");
logger.alert("這是測試 ALERT =====");
logger.critical("這是測試 CRITICAL =====");
logger.error("這是測試 ERROR =====");
logger.warning("這是測試 WARNING =====");
logger.info("這是測試 INFO =====");
logger.debug("這是測試 DEBUG =====");
logger.notice("這是測試 NOTICE =====");
}
result:
使用 sheet (use sheet)
code:
function t1() {
console.log("---------------------");
var logger = new BetterLogger.BetterLogger();
var levels = logger.levels;
// 設定要 log 的 sheet page
// set need to log sheet page
logger.set_sheet_id("1lqlqztKroBwDZ--VxoYN9Hh_BuwOzbdbowltI7yf2N4");
// 啟動 sheet 紀錄
// Turn on sheet log
logger.set_use_sheet(true);
logger.set_level(levels.NOTICE);
console.log(logger.get_config());
logger.emergency("這是測試 EMERGENCY =====");
logger.alert("這是測試 ALERT =====");
logger.critical("這是測試 CRITICAL =====");
logger.error("這是測試 ERROR =====");
logger.warning("這是測試 WARNING =====");
logger.info("這是測試 INFO =====");
logger.debug("這是測試 DEBUG =====");
logger.notice("這是測試 NOTICE =====");
}
result:
使用 mail 通知(use mail notice)
code:
function t3() {
console.log("---------------------");
var logger = new BetterLogger.BetterLogger();
console.log(logger.get_config());
logger.set_level(logger.levels.NOTICE);
// 啟動 mail 通知 (在沒有特別設定的情況下,只有 EMERGENCY、ALERT、NOTICE 3個會通知)
// Turn on mail notice, if you not change setting, only EMERGENCY、ALERT、NOTICE will notice
logger.set_use_mail(true);
// 這裡填寫你的程式名稱 寄信時當作標題用
// there fill in the name of your program , will use it as the title when sending a mail.
logger.application = "這裡填你的應用程式名稱";
logger.emergency("這是測試 EMERGENCY =====");
logger.alert("這是測試 ALERT =====");
logger.critical("這是測試 CRITICAL =====");
logger.error("這是測試 ERROR =====");
logger.warning("這是測試 WARNING =====");
logger.info("這是測試 INFO =====");
logger.debug("這是測試 DEBUG =====");
logger.notice("這是測試 NOTICE =====");
}
result:
概觀 Overview
| 功能 Methods | 說明 Explanation | | ------------------------------------------- | :-----------------------------------------------------------------------------------------------------------------------------------------------------: | | set_config | 一次設定 Logger 所有參數。Set Logger all config | | set_logfmt | 設定 Logger 的時間格式Set Logger time format | | set_GMT | 設定 Logger 時區,單位 GMTSet 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 idSet 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 | 設定是否要寄 emailSet whether to send email | | set_EMERGENCY_mail | 設定遇到 log 等級 EMERGENCY 時,是否要寄送 mail,預設 trueSet whether to send mail when encountering log level EMERGENCY,the default is true | | set_ALERT_mail | 設定遇到 log 等級 ALERT 時,是否要寄送 mail,預設 trueSet whether to send mail when encountering log level ALERT,the default is true | | set_CRITICAL_mail | 設定遇到 log 等級 CRITICAL 時,是否要寄送 mail,預設 falseSet whether to send mail when encountering log level CRITICAL,the default is false | | set_ERROR_mail | 設定遇到 log 等級 ERROR 時,是否要寄送 mail,預設 falseSet whether to send mail when encountering log level ERROR,the default is false | | set_WARNING_mail | 設定遇到 log 等級 WARNING 時,是否要寄送 mail,預設 falseSet whether to send mail when encountering log level WARNING,the default is false | | set_INFO_mail | 設定遇到 log 等級 INFO 時,是否要寄送 mail,預設 falseSet whether to send mail when encountering log level INFO,the default is false | | set_DEBUG_mail | 設定遇到 log 等級 DEBUG 時,是否要寄送 mail,預設 falseSet whether to send mail when encountering log level DEBUG,the default is false | | set_NOTICE_mail | 設定遇到 log 等級 NOTICE 時,是否要寄送 mail,預設 trueSet 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。
set_config(sheet_id, sheet_page_name, logfmt, GMT, datefmt, level);
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
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_config(
"xxx123",
"log_2020/07/13",
"%{datefmt} %{levelname} : %{message}",
"GMT+0",
"yyyy.MM.dd HH:mm:ss",
"INFO"
);
console.log(logger.get_config());
}
set_logfmt
設定 log 格式。
set_logfmt(logfmt);
Return
void
Parameters
| name | type | Description | | :---------------: | :----: | :----------------: | | logfmt | string | logger 的 log 格式 |
Explanation
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_logfmt("%{datefmt} %{levelname} : %{message}");
console.log(logger.get_config());
}
set_GMT
設定 Logger GMT 時區。
set_GMT(GMT);
Return
void
Parameters
| name | type | Description | | :------------------------------------------------------------------------------: | :----: | :---------: | | GMT | string | GMT 時區 |
Explanation
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_GMT("GTM+8");
console.log(logger.get_config());
}
set_use_console
用來開關 Stackdriver Logging,預設 true。
set_use_console(boolean);
Return
void
Parameters
| name | type | Description | | :-----: | :-----: | :-----------: | | boolean | boolean | true or false |
Explanation
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_use_console(false);
console.log(logger.get_config());
}
set_use_sheet
用來開關 sheet log,預設 false。
set_use_sheet(boolean);
Return
void
Parameters
| name | type | Description | | :-----: | :-----: | :-----------: | | boolean | boolean | true or false |
Explanation
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_use_sheet(true);
console.log(logger.get_config());
}
set_sheet_id
用來設定 sheet id。
set_sheet_id(id);
Return
void
Parameters
| name | type | Description |
| :--: | :----: | :-------------------------------------------------------------------------------------------------------------------------------------------: |
| id | string | https://docs.google.com/spreadsheets/d/ 1lqlqztKroBwDZ--VxoYN9Hh_BuwOzbdbowltI7yf2N4
/edit 網址中的這一段 (介於 "d/" 跟 "/edit" 之間) |
Explanation
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_sheet_id("1lqlqztKroBwDZ--VxoYN9Hh_BuwOzbdbowltI7yf2N4");
console.log(logger.get_config());
}
set_sheet_page_name
用來設定 sheet page name。
如果沒有在 sheet 中發現指定的 page 名稱,則會自己新增一個。
set_sheet_page_name(page_name);
Return
void
Parameters
| name | type | Description | | :-------: | :----: | :-----------------------------------: | | page_name | string | 使用 sheet 中的哪個 page,預設是'log' |
Explanation
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_sheet_page_name("log_2020/07/13");
console.log(logger.get_config());
}
set_sheet_log_slice
設定 log 進 sheet 時,要不要分欄輸入(A 欄、B 欄...)
如果是 false 就只輸出 1 欄。
set_sheet_log_slice(boolean);
Return
void
Parameters
| name | type | Description | | :-----: | :-----: | :-------------------------------------------------: | | boolean | boolean | 設定 log 進 sheet 時,要不要分欄輸入(A 欄、B 欄...) |
Explanation
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_sheet_log_slice(true);
console.log(logger.get_config());
}
set_level
設定 log level。
set_level(level);
Return
void
Parameters
| name | type | Description | | :---: | :-----------------------------------: | :--------------------------------------------------------------------: | | level | string | number | Levels | 紀錄的等級,可以接受 'EMERGENCY'、60、logger.levels.NOTICE 這 3 種方式 |
Explanation
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_level("WARNING");
console.log(logger.get_config());
}
set_XXX_color
設定 XXX 在 sheet log 時的顏色。
set_XXX_color(color);
Return
void
Parameters
| name | type | Description | | :---: | :----: | :------------------------------------------------------------------------------------: | | color | string | 十六進位字串顏色 |
Explanation
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_ALERT_color("#ffff00");
logger.set_level(50);
logger.alert("顏色 == #ffff00");
}
set_use_mail
設定是否在 log 時寄送 eamil。
預設是 false .
set_use_mail(boolean);
Return
void
Parameters
| name | type | Description | | :-----: | :-----: | :-----------: | | boolean | boolean | true of false |
Explanation
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_use_mail(true);
logger.alert("寄送 Email!");
}
set_XXX_mail
設定指定 log level 是否寄送 Email。 如果未指定,則只有 EMERGENCY、ALERT、NOTICE 這三個會寄送。詳見Levels
set_XXX_mail(boolean);
Return
void
Parameters
| name | type | Description | | :-----: | :-----: | :-----------: | | boolean | boolean | true of false |
Explanation
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_ERROR_mail(true);
logger.error("寄送 email!");
}
set_application
設定指定寄送 Email 時,標題的名稱。 預設 "Google_Apps_Script_Logger"。
set_application(subject);
Return
void
Parameters
| name | type | Description | | :-----: | :----: | :--------------: | | subject | string | 寄信時的標題名稱 |
Explanation
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_application("minecraft");
logger.notice("伺服器重啟成功!");
}
元件說明 Component Description
logfmt
logfmt 預設是 "%{datefmt} - %{user} - %{levelname} : %{message}"
種類
| 名稱 | 說明 | | :-------: | :----------------------------------------------: | | datefmt | 是時間格式化後的字串,詳見datefmt | | user | 為使用這個 Logger 的 google 帳號 ([email protected]) | | 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?