0.1.4 • Published 4 years ago

google-apps-script-better-logger v0.1.4

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

Google Apps Script Better Logger

Codacy Badge

一個比原生 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!⚠️

Imgur

一般使用(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: https://imgur.com/l3V7qHL


使用 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: https://imgur.com/6rNuqW2 https://imgur.com/YCZDDJm


使用 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: https://imgur.com/zsrH8Ld https://imgur.com/qvmNsfn https://imgur.com/BdHb7ng


概觀 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

nametypeDescription
sheet_idstringhttps://docs.google.com/spreadsheets/d/ 1lqlqztKroBwDZ--VxoYN9Hh_BuwOzbdbowltI7yf2N4 /edit 網址中的這一段 (介於 "d/" 跟 "/edit" 之間)
sheet_page_namestring使用 sheet 中的哪個 page,預設是'log'
logfmtstringlogger 的 log 格式
GMTstringGMT 時間
datefmtstringlogger 的 log 格式中 時間的紀錄方式
levelstring | 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

nametypeDescription
logfmtstringlogger 的 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

nametypeDescription
GMTstringGMT 時區

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

nametypeDescription
booleanbooleantrue 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

nametypeDescription
booleanbooleantrue 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

nametypeDescription
idstringhttps://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

nametypeDescription
page_namestring使用 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

nametypeDescription
booleanboolean設定 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

nametypeDescription
levelstring | 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

nametypeDescription
colorstring十六進位字串顏色

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

nametypeDescription
booleanbooleantrue 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

nametypeDescription
booleanbooleantrue 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

nametypeDescription
subjectstring寄信時的標題名稱

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 帳號 (xxx@gmail.com)
levelname是 log 的等級,詳見levels
message是你想記錄的訊息文字

datefmt

datefmt 預設是 "yyyy.MM.dd HH:mm:ss z" 詳細請看 SimpleDateFormat

Levels

名稱等級說明預設是否寄 email
EMERGENCY70緊急
ALERT60快訊
CRITICAL50重要
ERROR40錯誤
WARNING30警告
INFO20資訊
DEBUG10除錯
NOTICE0通知

待做 TODO

  • 將 log level 完整對應到 Stackdriver Logging 上,不再用其他代替
  • 考慮做 file 版記錄方式
  • sheet log 是否要做分天、月 log?
0.1.4

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago