From fc0c1170830cbc3e83c0da1e8aea99405a9d8cb5 Mon Sep 17 00:00:00 2001 From: Andrew Miner Date: Mon, 9 Feb 2015 20:41:12 -0800 Subject: [PATCH] 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. --- src/scripts/controllers/base_controller.coffee | 6 +++--- src/scripts/crafting_guide_router.coffee | 6 +++--- src/scripts/main.coffee | 4 ++-- src/scripts/models/base_model.coffee | 10 +++++----- src/scripts/models/crafting_plan.coffee | 6 +++--- src/scripts/models/email_client.coffee | 6 +++--- src/scripts/models/mod.coffee | 2 +- src/scripts/models/storage.coffee | 4 ++-- 8 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/scripts/controllers/base_controller.coffee b/src/scripts/controllers/base_controller.coffee index d6bbc6feb..af93ceb00 100644 --- a/src/scripts/controllers/base_controller.coffee +++ b/src/scripts/controllers/base_controller.coffee @@ -36,7 +36,7 @@ module.exports = class BaseController extends Backbone.View return child refresh: -> - logger.verbose "#{this} refreshing" + logger.verbose => "#{this} refreshing" routeLinkClick: (event)-> 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 {} 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 - logger.verbose "#{this} rendering with data: #{data}" + logger.verbose => "#{this} rendering with data: #{data}" @onWillRender() $oldEl = @$el $newEl = Backbone.$(@_template(data)) diff --git a/src/scripts/crafting_guide_router.coffee b/src/scripts/crafting_guide_router.coffee index f6f0cf051..837178958 100644 --- a/src/scripts/crafting_guide_router.coffee +++ b/src/scripts/crafting_guide_router.coffee @@ -96,15 +96,15 @@ module.exports = class CraftingGuideRouter extends Backbone.Router pathname = window.location.pathname 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 else - logger.info "Suppressing GA page view: #{pathname}" + logger.info -> "Suppressing GA page view: #{pathname}" _setPage: (page, 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 show = => @_page = page diff --git a/src/scripts/main.coffee b/src/scripts/main.coffee index 7ebbbebbb..a7103ac29 100644 --- a/src/scripts/main.coffee +++ b/src/scripts/main.coffee @@ -24,7 +24,7 @@ global.logger = new Logger switch window.location.hostname when 'localhost' global.env = 'development' - logger.level = Logger.DEBUG + logger.level = Logger.INFO when 'new.crafting-guide.com' global.env = 'staging' logger.level = Logger.VERBOSE @@ -41,5 +41,5 @@ feedbackController.render() global.router.loadDefaultModPack() -logger.info "CraftingGuide is ready" +logger.info -> "CraftingGuide is ready" Backbone.history.start pushState:true diff --git a/src/scripts/models/base_model.coffee b/src/scripts/models/base_model.coffee index f4ab45bb0..777ad783a 100644 --- a/src/scripts/models/base_model.coffee +++ b/src/scripts/models/base_model.coffee @@ -44,13 +44,13 @@ module.exports = class BaseModel extends Backbone.Model @set @parse text @trigger Event.change, this @trigger Event.sync, this - logger.info "#{@constructor.name}.#{@cid} loaded successfully" + logger.info => "#{@constructor.name}.#{@cid} loaded successfully" 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: (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 # Backbone.Model Overrides ##################################################################### @@ -60,7 +60,7 @@ module.exports = class BaseModel extends Backbone.Model return if (@isLoading or @isLoaded) and not options.force url = @url() - logger.info "#{@constructor.name}.#{@cid} reading from url: #{url}" + logger.info => "#{@constructor.name}.#{@cid} reading from url: #{url}" @trigger Event.request, this @loading = w.promise (resolve, reject)=> @@ -82,7 +82,7 @@ module.exports = class BaseModel extends Backbone.Model trigger: (name, model, args...)-> if @logEvents 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 # Object Overrides ############################################################################# diff --git a/src/scripts/models/crafting_plan.coffee b/src/scripts/models/crafting_plan.coffee index e59651dda..4f2bc5f69 100644 --- a/src/scripts/models/crafting_plan.coffee +++ b/src/scripts/models/crafting_plan.coffee @@ -91,14 +91,14 @@ module.exports = class CraftingPlan extends BaseModel # Private Methods ############################################################################## _addStep: (recipe)-> - logger.verbose "adding step: #{recipe.slug}" + logger.verbose -> "adding step: #{recipe.slug}" @steps[recipe.slug] = recipe:recipe _chooseRecipe: (item)-> return item.getPrimaryRecipe() _findSteps: (slug)-> - logger.debug "finding steps for #{slug}" + logger.debug -> "finding steps for #{slug}" item = @modPack.findItem slug return unless item? return unless item.isCraftable @@ -112,7 +112,7 @@ module.exports = class CraftingPlan extends BaseModel @_findSteps toolStack.slug return if @_hasStep item.slug - logger.debug "reserving: #{item.slug}" + logger.debug -> "reserving: #{item.slug}" @_reservedSteps[item.slug] = recipe for inputStack in recipe.input diff --git a/src/scripts/models/email_client.coffee b/src/scripts/models/email_client.coffee index 16545c237..b12678dff 100644 --- a/src/scripts/models/email_client.coffee +++ b/src/scripts/models/email_client.coffee @@ -32,12 +32,12 @@ module.exports = class EmailClient text: options.body 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)=> 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 if data.status isnt "sent" reject status:data.status, message:data.reject_reason @@ -45,7 +45,7 @@ module.exports = class EmailClient resolve status:data.status 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 $.ajax "#{@baseUrl}/messages/send.json", diff --git a/src/scripts/models/mod.coffee b/src/scripts/models/mod.coffee index c0976838e..9e9dc2ad4 100644 --- a/src/scripts/models/mod.coffee +++ b/src/scripts/models/mod.coffee @@ -169,7 +169,7 @@ module.exports = class Mod extends BaseModel @_activeModVersion = modVersion @trigger Event.change + ':activeModVersion', this, @_activeModVersion - logger.verbose "#{@slug} switched to version #{@_activeVersion}" + logger.verbose => "#{@slug} switched to version #{@_activeVersion}" if @_activeModVersion? @listenTo @_activeModVersion, 'all', -> @trigger.apply this, arguments diff --git a/src/scripts/models/storage.coffee b/src/scripts/models/storage.coffee index d28ada82a..e7bf2e8e2 100644 --- a/src/scripts/models/storage.coffee +++ b/src/scripts/models/storage.coffee @@ -19,12 +19,12 @@ module.exports = class Storage load: (key)-> value = @storage.getItem key - logger.verbose "loaded #{value} from #{key}" + logger.verbose -> "loaded #{value} from #{key}" return value store: (key, value)-> @storage.setItem key, value - logger.verbose "stored #{value} into #{key}" + logger.verbose -> "stored #{value} into #{key}" register: (key, model, properties...)-> modelData = @_models[key]