--- /dev/null
+"use strict";
+var assert = require('assert')
+, vows = require('vows')
+, sandbox = require('sandboxed-module')
+, log4js = require('../lib/log4js')
+, levels = require('../lib/levels');
+
+vows.describe('subcategories').addBatch({
+ 'loggers created after levels configuration is loaded': {
+ topic: function() {
+
+ log4js.configure({
+ "levels": {
+ "sub1": "WARN",
+ "sub1.sub11": "TRACE",
+ "sub1.sub11.sub111": "WARN",
+ "sub1.sub12": "INFO"
+ }
+ }, { reloadSecs: 30 })
+
+ return {
+ "sub1": log4js.getLogger('sub1'), // WARN
+ "sub11": log4js.getLogger('sub1.sub11'), // TRACE
+ "sub111": log4js.getLogger('sub1.sub11.sub111'), // WARN
+ "sub12": log4js.getLogger('sub1.sub12'), // INFO
+
+ "sub13": log4js.getLogger('sub1.sub13'), // Inherits sub1: WARN
+ "sub112": log4js.getLogger('sub1.sub11.sub112'), // Inherits sub1.sub11: TRACE
+ "sub121": log4js.getLogger('sub1.sub12.sub121'), // Inherits sub12: INFO
+ "sub0": log4js.getLogger('sub0') // Not defined, not inherited: TRACE
+ };
+ },
+ 'check logger levels': function(loggers) {
+ assert.equal(loggers.sub1.level, levels.WARN);
+ assert.equal(loggers.sub11.level, levels.TRACE);
+ assert.equal(loggers.sub111.level, levels.WARN);
+ assert.equal(loggers.sub12.level, levels.INFO);
+
+ assert.equal(loggers.sub13.level, levels.WARN);
+ assert.equal(loggers.sub112.level, levels.TRACE);
+ assert.equal(loggers.sub121.level, levels.INFO);
+ assert.equal(loggers.sub0.level, levels.TRACE);
+ }
+ },
+ 'loggers created before levels configuration is loaded': {
+ topic: function() {
+
+ var loggers = {
+ "sub1": log4js.getLogger('sub1'), // WARN
+ "sub11": log4js.getLogger('sub1.sub11'), // TRACE
+ "sub111": log4js.getLogger('sub1.sub11.sub111'), // WARN
+ "sub12": log4js.getLogger('sub1.sub12'), // INFO
+
+ "sub13": log4js.getLogger('sub1.sub13'), // Inherits sub1: WARN
+ "sub112": log4js.getLogger('sub1.sub11.sub112'), // Inherits sub1.sub11: TRACE
+ "sub121": log4js.getLogger('sub1.sub12.sub121'), // Inherits sub12: INFO
+ "sub0": log4js.getLogger('sub0') // Not defined, not inherited: TRACE
+ };
+
+
+ log4js.configure({
+ "levels": {
+ "sub1": "WARN",
+ "sub1.sub11": "TRACE",
+ "sub1.sub11.sub111": "WARN",
+ "sub1.sub12": "INFO"
+ }
+ }, { reloadSecs: 30 })
+
+ return loggers;
+
+
+ },
+ 'check logger levels': function(loggers) {
+ assert.equal(loggers.sub1.level, levels.WARN);
+ assert.equal(loggers.sub11.level, levels.TRACE);
+ assert.equal(loggers.sub111.level, levels.WARN);
+ assert.equal(loggers.sub12.level, levels.INFO);
+
+ assert.equal(loggers.sub13.level, levels.WARN);
+ assert.equal(loggers.sub112.level, levels.TRACE);
+ assert.equal(loggers.sub121.level, levels.INFO);
+ assert.equal(loggers.sub0.level, levels.TRACE);
+ }
+ }
+}).exportTo(module);