npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

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

6

Readme

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

| 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?