flannel

It's easy to handle logs when your coffee-script classes wear Flannel

Usage no npm install needed!

<script type="module">
  import flannel from 'https://cdn.skypack.dev/flannel';
</script>

README

flannel

Build Status Coverage Status Dependency Status devDependency Status Downloads

Winston helper mixins for coffee-script classes

"It's easy to handle logs when your coffee-script classes wear Flannel"

images of winston flannel

NPM

Installation

npm install --save flannel

Options

logPrefix string

the prefix to use when logging fns are called. This belongs as a Class or Instance variable on the target Class.

transports map

the winston transports to use, and their options. defaults to console:

  console:
    level: "info"

see also Winston Transports

Flannel.enabled bool

set to false to squelch Flannel from sending logs. defaults to true.

Flannel.logLevels array

the level names to use. defaults to ["debug", " info", " warn", " err"].

see also Winston#using-custom-logging-levels

Flannel.logLevelColors map

the colors for each log level. names must match logLevels. defaults to:

  "  err": "red"
  " warn": "yellow"
  " info": "green"
  "debug": "blue"

extending Flannel

@_dependencyMap and all other class vars and methods can be overwritten. Nothing is private.

Methods

Flannel.init(transports) returns Flannel

Initialize the Flannel class. It is designed as a singleton, so that logs from many classes are piped out through the same transports.

Flannel.shirt(obj)

Applies Flannel.shirt() to obj.

Flannel.shirt() returns map

Get the map of logLevels and their respective functions. defaults to:

  err:   (objs...) ->
  warn:  (objs...) ->
  info:  (objs...) ->
  debug: (objs...) ->
  log:   (objs...) -> # log() is an alias of debug() for convenience.

Flannel.morgan(level = "info", format = "combined", options = {})

Initalizes expressjs/morgan and pipes it into winston. No arguments are required.

Usage

Initialization


Flannel = require "flannel"


Flannel.init
  Console:
    level: "debug"
  Logentries:
    token: "abcd-1234-xxxx"

Instance methods

class YourApp
  logPrefix: "(YourApp)"

  constructor: ->
    Flannel.shirt this
    @warn "timber"
    ...

Class methods

class YourSingleton
  @someMethod: ->
    ...

Flannel.shirt YourSingleton
YourSingleton.ClassMethod = -> @info "and I'm OK"

With expressjs/morgan

class ExpressApp
  constructor: ->
    app = express()
    app.use Flannel.morgan()
    Flannel.shirt this

License

MIT Licensed. (C) 2016 doublerebel