一個比原生 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.
- 如何使用 Getting Started
- 概觀 Overview
- 功能詳細說明 Methods Detailed description
- 元件說明 Component Description
- 待做 TODO
打開 gs 編輯頁面
-> "資源"
-> "程式庫"
-> 將 1R4kOenBr5gSIcxUbCYegM4pStj0JzjXdA2jryW5s9J2Phg_ebaykmEgo
貼上輸入框
-> "新增"
-> 選擇最後版本(記得阿 不然儲存不了)
-> "儲存"~
Open Script Editor.
-> Resource
-> Library
-> Paste Script ID 1R4kOenBr5gSIcxUbCYegM4pStj0JzjXdA2jryW5s9J2Phg_ebaykmEgo
to box
-> Add library
-> select lastest version and save
npm i google-apps-script-better-logger
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 =====");
}
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 =====");
}
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 =====");
}
功能 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 |
設定 Logger。
set_config(sheet_id, sheet_page_name, logfmt, GMT, datefmt, level);
void
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 種方式 |
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());
}
設定 log 格式。
set_logfmt(logfmt);
void
name | type | Description |
---|---|---|
logfmt | string | logger 的 log 格式 |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_logfmt("%{datefmt} %{levelname} : %{message}");
console.log(logger.get_config());
}
設定 Logger GMT 時區。
set_GMT(GMT);
void
name | type | Description |
---|---|---|
GMT | string | GMT 時區 |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_GMT("GTM+8");
console.log(logger.get_config());
}
用來開關 Stackdriver Logging,預設 true。
set_use_console(boolean);
void
name | type | Description |
---|---|---|
boolean | boolean | true or false |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_use_console(false);
console.log(logger.get_config());
}
用來開關 sheet log,預設 false。
set_use_sheet(boolean);
void
name | type | Description |
---|---|---|
boolean | boolean | true or false |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_use_sheet(true);
console.log(logger.get_config());
}
用來設定 sheet id。
set_sheet_id(id);
void
name | type | Description |
---|---|---|
id | string | https://docs.google.com/spreadsheets/d/ 1lqlqztKroBwDZ--VxoYN9Hh_BuwOzbdbowltI7yf2N4 /edit 網址中的這一段 (介於 "d/" 跟 "/edit" 之間) |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_sheet_id("1lqlqztKroBwDZ--VxoYN9Hh_BuwOzbdbowltI7yf2N4");
console.log(logger.get_config());
}
用來設定 sheet page name。
如果沒有在 sheet 中發現指定的 page 名稱,則會自己新增一個。
set_sheet_page_name(page_name);
void
name | type | Description |
---|---|---|
page_name | string | 使用 sheet 中的哪個 page,預設是'log' |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_sheet_page_name("log_2020/07/13");
console.log(logger.get_config());
}
設定 log 進 sheet 時,要不要分欄輸入(A 欄、B 欄...)
如果是 false 就只輸出 1 欄。
set_sheet_log_slice(boolean);
void
name | type | Description |
---|---|---|
boolean | boolean | 設定 log 進 sheet 時,要不要分欄輸入(A 欄、B 欄...) |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_sheet_log_slice(true);
console.log(logger.get_config());
}
設定 log level。
set_level(level);
void
name | type | Description |
---|---|---|
level | string | number | Levels | 紀錄的等級,可以接受 'EMERGENCY'、60、logger.levels.NOTICE 這 3 種方式 |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_level("WARNING");
console.log(logger.get_config());
}
設定 XXX 在 sheet log 時的顏色。
set_XXX_color(color);
void
name | type | Description |
---|---|---|
color | string | 十六進位字串顏色 |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_ALERT_color("#ffff00");
logger.set_level(50);
logger.alert("顏色 == #ffff00");
}
設定是否在 log 時寄送 eamil。
預設是 false .
set_use_mail(boolean);
void
name | type | Description |
---|---|---|
boolean | boolean | true of false |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_use_mail(true);
logger.alert("寄送 Email!");
}
設定指定 log level 是否寄送 Email。 如果未指定,則只有 EMERGENCY、ALERT、NOTICE 這三個會寄送。詳見Levels
set_XXX_mail(boolean);
void
name | type | Description |
---|---|---|
boolean | boolean | true of false |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_ERROR_mail(true);
logger.error("寄送 email!");
}
設定指定寄送 Email 時,標題的名稱。 預設 "Google_Apps_Script_Logger"。
set_application(subject);
void
name | type | Description |
---|---|---|
subject | string | 寄信時的標題名稱 |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_application("minecraft");
logger.notice("伺服器重啟成功!");
}
logfmt 預設是 "%{datefmt} - %{user} - %{levelname} : %{message}"
名稱 | 說明 |
---|---|
datefmt | 是時間格式化後的字串,詳見datefmt |
user | 為使用這個 Logger 的 google 帳號 (xxx@gmail.com) |
levelname | 是 log 的等級,詳見levels |
message | 是你想記錄的訊息文字 |
datefmt 預設是 "yyyy.MM.dd HH:mm:ss z" 詳細請看 SimpleDateFormat
名稱 | 等級 | 說明 | 預設是否寄 email |
---|---|---|---|
EMERGENCY | 70 | 緊急 | ✓ |
ALERT | 60 | 快訊 | ✓ |
CRITICAL | 50 | 重要 | ✖ |
ERROR | 40 | 錯誤 | ✖ |
WARNING | 30 | 警告 | ✖ |
INFO | 20 | 資訊 | ✖ |
DEBUG | 10 | 除錯 | ✖ |
NOTICE | 0 | 通知 | ✓ |
- 將 log level 完整對應到 Stackdriver Logging 上,不再用其他代替
- 考慮做 file 版記錄方式
- sheet log 是否要做分天、月 log?