Enhancing Spine Log

31 views
Skip to first unread message

Axel Nitzschner

unread,
May 5, 2014, 10:19:40 PM5/5/14
to spi...@googlegroups.com
Spines build in Log utility inherently only supports controllers using "(App)" as an application-wide Prefix.

As a result you soon loose track of your debug output when its about dozens of controllers and models.
Here is how can get the best out of Spines build in Log Utility supporting not only controllers but also your models:

writing a model extender "model_extender":

Spine             = require("spine")
$                 = Spine.$
Model             = Spine.Model
Log               = Spine.Log

Model.Extender =

  extended: ->

    Extend =
      
      trace: true
      logPrefix: '(' + @className + ')'

    Include: ->
    
      trace: true
      logPrefix: '(' + @className + ')'
      

    @include Log
    @extend Log
    @extend Extend
    @include Include

module?.exports = Model.Extender

using your extender in your model "my_model":

Spine     = require("spine")
$         = Spine.$
Model     = Spine.Model
Extender  = require("<path_from_within_your_app>/model_extender")

class MyModel extends Spine.Model

  @extend Extender

  @configure 'MyModel', .....

  @coolModelConstructorFunction: -> @log 'what a super function' # output: (MyModel)what a super function

  coolModelFunction: -> @log 'what a cool function' # output: (MyModel)what a cool function

module?.exports = MyModel

writing a controller extender "controller_extender":

Spine       = require("spine")
$           = Spine.$
Controller  = Spine.Controller

Controller.Extender =
  
  extended: ->
    
    Include = 
    
      init: ->
      
        @trace = true
        @logPrefix = '(' + @constructor.name + ')'

    @include Include

module?.exports = Controller.Extender

using your extender in your controller "sample_controller":

Spine           = require("spine")
$               = Spine.$
Controller      = Spine.Controller
Extender        = require("<path_from_within_your_app>/controller_extender")

class SampleController extends Spine.Controller
  
  @extend Extender

  constructor: ->
    super

  someFunction: ->
    @log 'log test' # output: (SampleController)log test

After you logged in, logging can be switched on/off clicking 'Trace'  in the upper right button submenu
Reply all
Reply to author
Forward
0 new messages