 			return LoggerManager.loggers[@name]
 
 		for type, typeConfig of @defaultTypes
-			do (type, typeConfig) =>
-				@[type] = (args...) =>
-					@_log
+			do (type, typeConfig) ->
+				self[type] = (args...) ->
+					self._log.call self,
+						section: this.__section
 						type: type
 						level: typeConfig.level
 						method: typeConfig.name
 						arguments: args
 
-				@[type+"_box"] = (args...) =>
-					@_log
+				self[type+"_box"] = (args...) ->
+					self._log.call self,
+						section: this.__section
 						type: type
 						box: true
 						level: typeConfig.level


		if @config.methods?
			for method, typeConfig of @config.methods
				do (method, typeConfig) =>
					if @[method]?
						@warn "Method", method, "already exists"

					if not @defaultTypes[typeConfig.type]?
						@warn "Method type", typeConfig.type, "doest not exists"

					@[method] = (args...) =>
						@_log
							type: typeConfig.type
							level: if typeConfig.level? then typeConfig.level else @defaultTypes[typeConfig.type]?.level
							method: method
							arguments: args

					@[method+"_box"] = (args...) =>
						@_log
							type: typeConfig.type
							box: true
							level: if typeConfig.level? then typeConfig.level else @defaultTypes[typeConfig.type]?.level
							method: method
							arguments: args

		LoggerManager.register @
		return @

	getPrefix: (options) ->
		prefix = "#{@name} ➔ #{options.method}"

		details = @_getCallerDetails()


			level: 0

	constructor: (@name, config={}) ->
		self = @
		@config = {}

		_.extend @config, config
