Improve logging performance by using functions

Improve logging performance by using functions to delay when complex
strings are created until after the current logging level has been
checked to ensure that log statement is actually going to be printed.
There are many places where very complex objects are printed at lower
logging levels which this avoids.
This commit is contained in:
Andrew Miner
2015-02-09 21:15:10 -08:00
parent cf6d6fdbed
commit 0a52d16eb1
8 changed files with 22 additions and 22 deletions
@@ -36,7 +36,7 @@ module.exports = class BaseController extends Backbone.View
return child return child
refresh: -> refresh: ->
logger.verbose "#{this} refreshing" logger.verbose => "#{this} refreshing"
routeLinkClick: (event)-> routeLinkClick: (event)->
href = $(event.currentTarget).attr 'href' href = $(event.currentTarget).attr 'href'
@@ -91,10 +91,10 @@ module.exports = class BaseController extends Backbone.View
data = (@model?.toHash? and @model.toHash()) or @model or {} data = (@model?.toHash? and @model.toHash()) or @model or {}
if not @_template? if not @_template?
logger.error "Default render called for #{@constructor.name} without a template" logger.error => "Default render called for #{@constructor.name} without a template"
return this return this
logger.verbose "#{this} rendering with data: #{data}" logger.verbose => "#{this} rendering with data: #{data}"
@onWillRender() @onWillRender()
$oldEl = @$el $oldEl = @$el
$newEl = Backbone.$(@_template(data)) $newEl = Backbone.$(@_template(data))
+3 -3
View File
@@ -100,15 +100,15 @@ module.exports = class CraftingGuideRouter extends Backbone.Router
pathname = window.location.pathname pathname = window.location.pathname
if global.env is 'production' and ga? if global.env is 'production' and ga?
logger.info "Recording GA page view: #{pathname}" logger.info -> "Recording GA page view: #{pathname}"
ga 'send', 'pageview', pathname ga 'send', 'pageview', pathname
else else
logger.info "Suppressing GA page view: #{pathname}" logger.info -> "Suppressing GA page view: #{pathname}"
_setPage: (page, controller)-> _setPage: (page, controller)->
return if @_controller is controller return if @_controller is controller
logger.info "changing to page controller: #{controller.constructor.name}" logger.info -> "changing to page controller: #{controller.constructor.name}"
showDuration = Duration.normal showDuration = Duration.normal
show = => show = =>
@_page = page @_page = page
+2 -2
View File
@@ -24,7 +24,7 @@ global.logger = new Logger
switch window.location.hostname switch window.location.hostname
when 'localhost' when 'localhost'
global.env = 'development' global.env = 'development'
logger.level = Logger.DEBUG logger.level = Logger.INFO
when 'new.crafting-guide.com' when 'new.crafting-guide.com'
global.env = 'staging' global.env = 'staging'
logger.level = Logger.VERBOSE logger.level = Logger.VERBOSE
@@ -41,5 +41,5 @@ feedbackController.render()
global.router.loadDefaultModPack() global.router.loadDefaultModPack()
logger.info "CraftingGuide is ready" logger.info -> "CraftingGuide is ready"
Backbone.history.start pushState:true Backbone.history.start pushState:true
+5 -5
View File
@@ -44,13 +44,13 @@ module.exports = class BaseModel extends Backbone.Model
@set @parse text @set @parse text
@trigger Event.change, this @trigger Event.change, this
@trigger Event.sync, this @trigger Event.sync, this
logger.info "#{@constructor.name}.#{@cid} loaded successfully" logger.info => "#{@constructor.name}.#{@cid} loaded successfully"
catch e catch e
logger.error "A parsing error occured: #{e.stack}" logger.error -> "A parsing error occured: #{e.stack}"
@onLoadFailed e.message, 'parsing failed', xhr @onLoadFailed e.message, 'parsing failed', xhr
onLoadFailed: (error, status, xhr)-> onLoadFailed: (error, status, xhr)->
logger.error "#{@constructor.name}.#{@cid} failed to load: status:#{status}, message:#{error}" logger.error => "#{@constructor.name}.#{@cid} failed to load: status:#{status}, message:#{error}"
@trigger Event.error, this, error @trigger Event.error, this, error
# Backbone.Model Overrides ##################################################################### # Backbone.Model Overrides #####################################################################
@@ -60,7 +60,7 @@ module.exports = class BaseModel extends Backbone.Model
return if (@isLoading or @isLoaded) and not options.force return if (@isLoading or @isLoaded) and not options.force
url = @url() url = @url()
logger.info "#{@constructor.name}.#{@cid} reading from url: #{url}" logger.info => "#{@constructor.name}.#{@cid} reading from url: #{url}"
@trigger Event.request, this @trigger Event.request, this
@loading = w.promise (resolve, reject)=> @loading = w.promise (resolve, reject)=>
@@ -82,7 +82,7 @@ module.exports = class BaseModel extends Backbone.Model
trigger: (name, model, args...)-> trigger: (name, model, args...)->
if @logEvents if @logEvents
argText = ("#{arg}"[0..50] for arg in args).join ", " argText = ("#{arg}"[0..50] for arg in args).join ", "
logger.trace "#{@constructor.name}.#{@cid} triggered event #{name} with args: #{argText}" logger.trace => "#{@constructor.name}.#{@cid} triggered event #{name} with args: #{argText}"
super super
# Object Overrides ############################################################################# # Object Overrides #############################################################################
+3 -3
View File
@@ -91,14 +91,14 @@ module.exports = class CraftingPlan extends BaseModel
# Private Methods ############################################################################## # Private Methods ##############################################################################
_addStep: (recipe)-> _addStep: (recipe)->
logger.verbose "adding step: #{recipe.slug}" logger.verbose -> "adding step: #{recipe.slug}"
@steps[recipe.slug] = recipe:recipe @steps[recipe.slug] = recipe:recipe
_chooseRecipe: (item)-> _chooseRecipe: (item)->
return item.getPrimaryRecipe() return item.getPrimaryRecipe()
_findSteps: (slug)-> _findSteps: (slug)->
logger.debug "finding steps for #{slug}" logger.debug -> "finding steps for #{slug}"
item = @modPack.findItem slug item = @modPack.findItem slug
return unless item? return unless item?
return unless item.isCraftable return unless item.isCraftable
@@ -112,7 +112,7 @@ module.exports = class CraftingPlan extends BaseModel
@_findSteps toolStack.slug @_findSteps toolStack.slug
return if @_hasStep item.slug return if @_hasStep item.slug
logger.debug "reserving: #{item.slug}" logger.debug -> "reserving: #{item.slug}"
@_reservedSteps[item.slug] = recipe @_reservedSteps[item.slug] = recipe
for inputStack in recipe.input for inputStack in recipe.input
+3 -3
View File
@@ -32,12 +32,12 @@ module.exports = class EmailClient
text: options.body text: options.body
to: [ email:options.toAddress, name:options.toName, type:'to' ] to: [ email:options.toAddress, name:options.toName, type:'to' ]
logger.info "sending email: #{util.inspect(body)}" logger.info -> "sending email: #{util.inspect(body)}"
w.promise (resolve, reject)=> w.promise (resolve, reject)=>
onSuccess = (data, status, request)-> onSuccess = (data, status, request)->
logger.info "sending email result: #{util.inspect(data)}, status:#{status}" logger.info -> "sending email result: #{util.inspect(data)}, status:#{status}"
data = if _.isArray data then data[0] else data data = if _.isArray data then data[0] else data
if data.status isnt "sent" if data.status isnt "sent"
reject status:data.status, message:data.reject_reason reject status:data.status, message:data.reject_reason
@@ -45,7 +45,7 @@ module.exports = class EmailClient
resolve status:data.status resolve status:data.status
onError = (request, status, error)-> onError = (request, status, error)->
logger.error "sending email failed: #{status}, error:#{error}" logger.error -> "sending email failed: #{status}, error:#{error}"
reject status:status, message:error reject status:status, message:error
$.ajax "#{@baseUrl}/messages/send.json", $.ajax "#{@baseUrl}/messages/send.json",
+1 -1
View File
@@ -169,7 +169,7 @@ module.exports = class Mod extends BaseModel
@_activeModVersion = modVersion @_activeModVersion = modVersion
@trigger Event.change + ':activeModVersion', this, @_activeModVersion @trigger Event.change + ':activeModVersion', this, @_activeModVersion
logger.verbose "#{@slug} switched to version #{@_activeVersion}" logger.verbose => "#{@slug} switched to version #{@_activeVersion}"
if @_activeModVersion? if @_activeModVersion?
@listenTo @_activeModVersion, 'all', -> @trigger.apply this, arguments @listenTo @_activeModVersion, 'all', -> @trigger.apply this, arguments
+2 -2
View File
@@ -19,12 +19,12 @@ module.exports = class Storage
load: (key)-> load: (key)->
value = @storage.getItem key value = @storage.getItem key
logger.verbose "loaded #{value} from #{key}" logger.verbose -> "loaded #{value} from #{key}"
return value return value
store: (key, value)-> store: (key, value)->
@storage.setItem key, value @storage.setItem key, value
logger.verbose "stored #{value} into #{key}" logger.verbose -> "stored #{value} into #{key}"
register: (key, model, properties...)-> register: (key, model, properties...)->
modelData = @_models[key] modelData = @_models[key]