diff --git a/packages/rocketchat-lib/lib/configLogger.coffee b/packages/rocketchat-lib/lib/configLogger.coffee
new file mode 100644
index 00000000000..37496802ad5
--- /dev/null
+++ b/packages/rocketchat-lib/lib/configLogger.coffee
@@ -0,0 +1,12 @@
+RocketChat.settings.get 'Log_Package', (key, value) ->
+ LoggerManager?.showPackage = value
+
+RocketChat.settings.get 'Log_File', (key, value) ->
+ LoggerManager?.showFileAndLine = value
+
+RocketChat.settings.get 'Log_Level', (key, value) ->
+ if value?
+ LoggerManager?.logLevel = parseInt value
+ Meteor.setTimeout ->
+ LoggerManager?.enable(true)
+ , 200
diff --git a/packages/rocketchat-lib/package.js b/packages/rocketchat-lib/package.js
index c901325a8af..65aabf8cce3 100644
--- a/packages/rocketchat-lib/package.js
+++ b/packages/rocketchat-lib/package.js
@@ -35,6 +35,7 @@ Package.onUse(function(api) {
// COMMON LIB
api.addFiles('lib/settings.coffee');
+ api.addFiles('lib/configLogger.coffee');
api.addFiles('lib/callbacks.coffee');
api.addFiles('lib/slashCommand.coffee');
api.addFiles('lib/Message.coffee');
diff --git a/packages/rocketchat-lib/server/startup/settings.coffee b/packages/rocketchat-lib/server/startup/settings.coffee
index af91d9ec18d..20a6e48712c 100644
--- a/packages/rocketchat-lib/server/startup/settings.coffee
+++ b/packages/rocketchat-lib/server/startup/settings.coffee
@@ -164,6 +164,12 @@ RocketChat.settings.addGroup 'Layout', ->
@add 'Layout_Login_Terms', 'By proceeding to create your account and use Rocket.Chat, you are agreeing to our Terms of Service and Privacy Policy. If you do not agree, you cannot use Rocket.Chat.', { type: 'string', multiline: true, public: true }
+RocketChat.settings.addGroup 'Logs', ->
+ @add 'Log_Level', '0', { type: 'select', values: [ { key: '0', i18nLabel: '0_Errors_Only' }, { key: '1', i18nLabel: '1_Errors_and_Information' }, { key: '2', i18nLabel: '2_Erros_Information_and_Debug' } ] , public: true }
+ @add 'Log_Package', false, { type: 'boolean', public: true }
+ @add 'Log_File', false, { type: 'boolean', public: true }
+
+
RocketChat.settings.init()
# Remove runtime settings (non-persistent)
diff --git a/packages/rocketchat-logger/server.coffee b/packages/rocketchat-logger/server.coffee
index c8da998332b..3d5f1eb5753 100644
--- a/packages/rocketchat-logger/server.coffee
+++ b/packages/rocketchat-logger/server.coffee
@@ -1,9 +1,12 @@
@LoggerManager = new class extends EventEmitter
constructor: ->
+ @enabled = false
@loggers = {}
- @showPackage = true
- @showFileAndLine = true
- @logLevel = 2
+ @queue = []
+
+ @showPackage = false
+ @showFileAndLine = false
+ @logLevel = 0
register: (logger) ->
if not logger instanceof Logger
@@ -13,12 +16,41 @@
@emit 'register', logger
-@LoggerManager.on 'register', ->
- console.log('on register', arguments)
+ addToQueue: (logger, args)->
+ @queue.push
+ logger: logger
+ args: args
+
+ dispatchQueue: ->
+ for item in @queue
+ item.logger._log.apply item.logger, item.args
+
+ @clearQueue()
+
+ clearQueue: ->
+ @queue = []
+
+ disable: ->
+ @enabled = false
+
+ enable: (dispatchQueue=false) ->
+ @enabled = true
+ if dispatchQueue is true
+ @dispatchQueue()
+ else
+ @clearQueue()
+
+
+# @LoggerManager.on 'register', ->
+# console.log('on register', arguments)
@Logger = class Logger
defaultTypes:
+ debug:
+ name: 'debug'
+ color: 'blue'
+ level: 2
log:
name: 'info'
color: 'blue'
@@ -27,10 +59,6 @@
name: 'info'
color: 'blue'
level: 1
- debug:
- name: 'debug'
- color: 'blue'
- level: 2
warn:
name: 'warn'
color: 'magenta'
@@ -83,9 +111,10 @@
details = @_getCallerDetails()
detailParts = []
- if details.package? and LoggerManager.showPackage is true
+ if details.package? and (LoggerManager.showPackage is true or options.type is 'error')
detailParts.push details.package
- if LoggerManager.showFileAndLine is true
+
+ if LoggerManager.showFileAndLine is true or options.type is 'error'
if details.file? and details.line?
detailParts.push "#{details.file}:#{details.line}"
else
@@ -153,6 +182,10 @@
return details
_log: (options) ->
+ if LoggerManager.enabled is false
+ LoggerManager.addToQueue @, arguments
+ return
+
options.level ?= 1
if LoggerManager.logLevel < options.level