Greasy Fork

Greasemonkey | Color Log

Colored logger for Greasemonkey scripts. Drop-in extension for 'console' logging methods (debug/info/log/warn/error). Filters messages generated via 'console.debug' per default – set 'window.DEBUG = true' anywhere to show them.

目前为 2018-03-14 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.greasyfork.icu/scripts/38888/258569/Greasemonkey%20%7C%20Color%20Log.js

// ==UserScript==
// @name            Greasemonkey | Color Log
// @namespace       de.sidneys.greasemonkey
// @homepage        https://gist.githubusercontent.com/sidneys/5d44a978d18a1b91f554b2358406671d/raw/
// @version         11.0.0
// @description     Colored logger for Greasemonkey scripts. Drop-in extension for 'console' logging methods (debug/info/log/warn/error). Filters messages generated via 'console.debug' per default – set 'window.DEBUG = true' anywhere to show them.
// @author          sidneys
// @icon            https://www.greasespot.net/favicon.ico
// @include         http*://*/*
// @grant           unsafeWindow
// ==/UserScript==

/**
 * Check DEBUG within window and Greasemonkey context
 * @returns {Boolean} - Yes/no
 */
let isDebug =  () => Boolean(unsafeWindow.DEBUG) || Boolean(this.DEBUG);
isDebug = isDebug.bind(this);

/**
 * Get log prefix
 * @returns {String} - Prefix
 */
let getPrefix =  () => GM_info.script.name;


/**
 * Original log method
 * @type {function}
 * @constant
 */
const originalLog = console.log;

/**
 * Color log
 * @type {Object}
 * @constant
 */
const colorLog = {
    debug() {
        if (!isDebug()) { return; }

        const color = `rgb(255, 150, 70)`;

        originalLog.call(this, `? %c[${getPrefix()}] %c${Array.from(arguments).join(' ')}`, `font-weight: 600; color: ${color};`, `font-weight: 400; color: ${color};`);
    },
    error() {
        const color = `rgb(220, 0, 30)`;

        originalLog.call(this, `?️ %c[${getPrefix()}] %c${Array.from(arguments).join(' ')}`, `font-weight: 600; color: ${color};`, `font-weight: 400; color: ${color};`);
    },
    info() {
        const color = `rgb(0, 200, 180)`;

        originalLog.call(this, `ℹ️ %c[${getPrefix()}] %c${Array.from(arguments).join(' ')}`, `font-weight: 600; color: ${color};`, `font-weight: 400; color: ${color};`);
    },
    log() {
        const color = `rgb(70, 70, 70)`;

        originalLog.call(this, `✳️ %c[${getPrefix()}] %c${Array.from(arguments).join(' ')}`, `font-weight: 600; color: ${color};`, `font-weight: 400; color: ${color};`);
    },
    warn() {
        const color = `rgb(255, 100, 0)`;

        originalLog.call(this, `⚠️ %c[${getPrefix()}] %c${Array.from(arguments).join(' ')}`, `font-weight: 600; color: ${color};`, `font-weight: 400; color: ${color};`);
    }
};


/**
 * Main
 * Replace console methods (debug, info, log, warn, error)
 */
Object.assign(console, colorLog);