log.coffee | |
---|---|
Template | |
Private constants | |
Define the different logging levels privately first. | LEVELS =
trace: 10
information: 20
debug: 30
warning: 40
error: 50 |
Private variables | |
Ensure that all logs are sent to the background pages console. | {console} = chrome.extension.getBackgroundPage() |
Private functions | |
Determine whether or not logging is enabled for the specified | loggable = (level) -> log.config.enabled and level >= log.config.level |
Logging setup | log = window.log = new class Log extends utils.Class |
Public constants | |
Expose the available logging levels. | TRACE: LEVELS.trace
INFORMATION: LEVELS.information
DEBUG: LEVELS.debug
WARNING: LEVELS.warning
ERROR: LEVELS.error |
A collection of all of the levels to allow iteration. | LEVELS: (
array = []
array.push name: key, value: value for own key, value of LEVELS
array.sort (a, b) -> a.value - b.value
) |
Public variables | |
Hold the current conguration for the logger. | config:
enabled: no
level: LEVELS.debug |
Public functions | |
Create/increment a counter and output its current count for all | count: (names...) ->
console.count name for name in names if loggable @DEBUG |
Output all debug | debug: (entries...) ->
console.debug entry for entry in entries if loggable @DEBUG |
Display an interactive listing of the properties of all | dir: (entries...) ->
console.dir entry for entry in entries if loggable @DEBUG |
Output all error | error: (entries...) ->
console.error entry for entry in entries if loggable @ERROR |
Output all informative | info: (entries...) ->
console.info entry for entry in entries if loggable @INFORMATION |
Output all general | out: (entries...) ->
console.log entry for entry in entries if @config.enabled |
Start a timer for all | time: (names...) ->
console.time name for name in names if loggable @DEBUG |
Stop a timer and output its elapsed time in milliseconds for all | timeEnd: (names...) ->
console.timeEnd name for name in names if loggable @DEBUG |
Output a stack trace. | trace: (caller = @trace) ->
console.log new @StackTrace(caller).stack if loggable @TRACE |
Output all warning | warn: (entries...) ->
console.warn entry for entry in entries if loggable @WARNING |
Public classes | |
| class log.StackTrace extends utils.Class |
Create a new instance of | constructor: (caller = log.StackTrace) -> |
Create the stack trace and assign it to a new | Error.captureStackTrace this, caller |
Configuration | |
Initialize logging. | if store?
store.init 'logger', {}
store.modify 'logger', (logger) ->
logger.enabled ?= no
logger.level ?= LEVELS.debug
log.config = logger
|