utils_logger.js - hiro-nyon/cesium-heatbox GitHub Wiki

Source: utils/logger.js

日本語 | English

English

See also: Class: logger

/**
 * Logging utility.
 * NODE_ENV and debug flags control the log level.
 * ログ出力制御ユーティリティ。NODE_ENV や debug フラグによってログレベルを制御します。
 */

/**
 * Log level constants.
 * ログレベル定数。
 */
const LOG_LEVELS = {
  ERROR: 0,
  WARN: 1,
  INFO: 2,
  DEBUG: 3
};

/**
 * Determine current log level.
 * 現在のログレベルを決定します。
 * NODE_ENV=production では ERROR と WARN のみ、DEBUG=true または NODE_ENV=development では全レベル出力。
 */
function getLogLevel() {
  // 明示的にDEBUG=trueが設定されている場合
  if (typeof process !== 'undefined' && process.env && process.env.DEBUG === 'true') {
    return LOG_LEVELS.DEBUG;
  }
  
  // NODE_ENVをチェック
  if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'production') {
    return LOG_LEVELS.WARN;
  }
  
  // デフォルトは開発モード(全ログ出力)
  return LOG_LEVELS.DEBUG;
}

let currentLogLevel = getLogLevel();

/**
 * Common logging utility.
 * ログ出力の共通ユーティリティ。
 */
export const Logger = {
  /**
   * Error log (always output).
   * エラーログ(常に出力)。
   * @param {...any} args - Log arguments / ログ引数
   */
  error(...args) {
    if (currentLogLevel >= LOG_LEVELS.ERROR) {
      console.error('[Heatbox ERROR]', ...args); // eslint-disable-line no-console
    }
  },

  /**
   * Warning log.
   * 警告ログ。
   * @param {...any} args - Log arguments / ログ引数
   */
  warn(...args) {
    if (currentLogLevel >= LOG_LEVELS.WARN) {
      console.warn('[Heatbox WARN]', ...args); // eslint-disable-line no-console
    }
  },

  /**
   * Info log.
   * 情報ログ。
   * @param {...any} args - Log arguments / ログ引数
   */
  info(...args) {
    if (currentLogLevel >= LOG_LEVELS.INFO) {
      console.log('[Heatbox INFO]', ...args); // eslint-disable-line no-console
    }
  },

  /**
   * Debug log.
   * デバッグログ。
   * @param {...any} args - Log arguments / ログ引数
   */
  debug(...args) {
    if (currentLogLevel >= LOG_LEVELS.DEBUG) {
      console.log('[Heatbox DEBUG]', ...args); // eslint-disable-line no-console
    }
  },

  /**
   * Control log level by options.
   * オプション設定によるログレベル制御。
   * v0.1.5: debug オプションがオブジェクトの場合に対応。
   * @param {Object} options - Options / オプション
   */
  setLogLevel(options) {
    if (options && options.debug !== undefined) {
      if (typeof options.debug === 'boolean') {
        // debug: true → 詳細ログ、debug: false → 重要ログのみ
        currentLogLevel = options.debug ? LOG_LEVELS.DEBUG : LOG_LEVELS.WARN;
      } else if (typeof options.debug === 'object' && options.debug !== null) {
        // オブジェクトの場合はログレベルをDEBUGに設定(境界表示制御は別途処理)
        currentLogLevel = LOG_LEVELS.DEBUG;
      }
    }
    return currentLogLevel;
  }
};

/**
 * Wrapper functions for backward compatibility.
 * 既存の console.log 置き換え用のラッパー関数群。
 */
export const log = Logger.debug;
export const warn = Logger.warn;
export const error = Logger.error;
export const info = Logger.info;

日本語

関連: loggerクラス

/**
 * Logging utility.
 * NODE_ENV and debug flags control the log level.
 * ログ出力制御ユーティリティ。NODE_ENV や debug フラグによってログレベルを制御します。
 */

/**
 * Log level constants.
 * ログレベル定数。
 */
const LOG_LEVELS = {
  ERROR: 0,
  WARN: 1,
  INFO: 2,
  DEBUG: 3
};

/**
 * Determine current log level.
 * 現在のログレベルを決定します。
 * NODE_ENV=production では ERROR と WARN のみ、DEBUG=true または NODE_ENV=development では全レベル出力。
 */
function getLogLevel() {
  // 明示的にDEBUG=trueが設定されている場合
  if (typeof process !== 'undefined' && process.env && process.env.DEBUG === 'true') {
    return LOG_LEVELS.DEBUG;
  }
  
  // NODE_ENVをチェック
  if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'production') {
    return LOG_LEVELS.WARN;
  }
  
  // デフォルトは開発モード(全ログ出力)
  return LOG_LEVELS.DEBUG;
}

let currentLogLevel = getLogLevel();

/**
 * Common logging utility.
 * ログ出力の共通ユーティリティ。
 */
export const Logger = {
  /**
   * Error log (always output).
   * エラーログ(常に出力)。
   * @param {...any} args - Log arguments / ログ引数
   */
  error(...args) {
    if (currentLogLevel >= LOG_LEVELS.ERROR) {
      console.error('[Heatbox ERROR]', ...args); // eslint-disable-line no-console
    }
  },

  /**
   * Warning log.
   * 警告ログ。
   * @param {...any} args - Log arguments / ログ引数
   */
  warn(...args) {
    if (currentLogLevel >= LOG_LEVELS.WARN) {
      console.warn('[Heatbox WARN]', ...args); // eslint-disable-line no-console
    }
  },

  /**
   * Info log.
   * 情報ログ。
   * @param {...any} args - Log arguments / ログ引数
   */
  info(...args) {
    if (currentLogLevel >= LOG_LEVELS.INFO) {
      console.log('[Heatbox INFO]', ...args); // eslint-disable-line no-console
    }
  },

  /**
   * Debug log.
   * デバッグログ。
   * @param {...any} args - Log arguments / ログ引数
   */
  debug(...args) {
    if (currentLogLevel >= LOG_LEVELS.DEBUG) {
      console.log('[Heatbox DEBUG]', ...args); // eslint-disable-line no-console
    }
  },

  /**
   * Control log level by options.
   * オプション設定によるログレベル制御。
   * v0.1.5: debug オプションがオブジェクトの場合に対応。
   * @param {Object} options - Options / オプション
   */
  setLogLevel(options) {
    if (options && options.debug !== undefined) {
      if (typeof options.debug === 'boolean') {
        // debug: true → 詳細ログ、debug: false → 重要ログのみ
        currentLogLevel = options.debug ? LOG_LEVELS.DEBUG : LOG_LEVELS.WARN;
      } else if (typeof options.debug === 'object' && options.debug !== null) {
        // オブジェクトの場合はログレベルをDEBUGに設定(境界表示制御は別途処理)
        currentLogLevel = LOG_LEVELS.DEBUG;
      }
    }
    return currentLogLevel;
  }
};

/**
 * Wrapper functions for backward compatibility.
 * 既存の console.log 置き換え用のラッパー関数群。
 */
export const log = Logger.debug;
export const warn = Logger.warn;
export const error = Logger.error;
export const info = Logger.info;