log4javascript-rails 1.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +20 -0
- data/README.md +25 -0
- data/lib/log4javascript-rails.rb +8 -0
- data/lib/log4javascript-rails/version.rb +5 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6.tar.gz +0 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/changelog.txt +379 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/console.html +263 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/console_uncompressed.html +2279 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/demos/basic.html +159 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/demos/blank.html +4 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/demos/index.html +49 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/demos/inpage.html +174 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/demos/lite.html +148 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/docs/backwardsincompatibilities.html +90 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/docs/distribution.html +87 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/docs/index.html +190 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/docs/lite.html +182 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/docs/manual.html +3198 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/docs/manual_lite.html +383 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/docs/quickstart.html +230 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/docs/whatsnew.html +86 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/examples/demo.html +16 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/examples/example_manual.html +31 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/examples/example_quickstart_1.html +36 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/examples/myloggingservlet.do +0 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/console.html +263 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/console_uncompressed.html +2279 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/liteconsole.html +41 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/liteconsole_uncompressed.html +194 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/log4javascript.js +274 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/log4javascript_lite.js +55 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/log4javascript_lite_uncompressed.js +620 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/log4javascript_production.js +188 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/log4javascript_production_uncompressed.js +2290 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/log4javascript_uncompressed.js +5879 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/stubs/log4javascript.js +23 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/stubs/log4javascript_lite.js +21 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/stubs/log4javascript_lite_uncompressed.js +102 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/stubs/log4javascript_production.js +22 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/stubs/log4javascript_production_uncompressed.js +253 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/stubs/log4javascript_uncompressed.js +341 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/tests/log4javascript.js +32 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/tests/log4javascript_lite.js +16 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/tests/log4javascript_lite_uncompressed.js +16 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/tests/log4javascript_production.js +28 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/tests/log4javascript_production_uncompressed.js +728 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/js/tests/log4javascript_uncompressed.js +862 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/license.txt +201 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/log4javascript.js +274 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/log4javascript_uncompressed.js +5879 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/main.css +300 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/test/index.html +15 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/test/log4javascript.html +16 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/test/log4javascript_lite.html +16 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/test/log4javascript_lite_uncompressed.html +16 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/test/log4javascript_production.html +16 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/test/log4javascript_production_uncompressed.html +16 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/test/log4javascript_uncompressed.html +16 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/test/main.html +16 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/test/tests.css +88 -0
- data/vendor/assets/javascripts/log4javascript-1.4.6/test/xntest.js +739 -0
- data/vendor/assets/javascripts/log4javascript.js +1 -0
- data/vendor/assets/stylesheets/angular-ng-grid-rails.css +439 -0
- metadata +107 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2013 Tim Down.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
function array_contains(arr,val){for(var i=0;i<arr.length;i++){if(arr[i]==val){return true;}}
|
|
19
|
+
return false;}
|
|
20
|
+
function compareObjectInterface(obj1,obj1_name,obj2,obj2_name,namePrefix){if(!namePrefix){namePrefix="";}
|
|
21
|
+
var obj1PropertyNames=new Array();for(var i in obj1){if(i!="prototype"&&i!="arguments"){obj1PropertyNames.push(i);}}
|
|
22
|
+
if(obj1&&obj1.prototype&&!array_contains(obj1PropertyNames,"prototype")){}
|
|
23
|
+
for(var j=0;j<obj1PropertyNames.length;j++){var propertyName=obj1PropertyNames[j];if((typeof obj1[propertyName]=="function"||typeof obj1[propertyName]=="object")&&!(obj1[propertyName]instanceof Array)){var propertyFullyQualifiedName=(namePrefix=="")?propertyName:namePrefix+"."+propertyName;try{if(typeof obj2[propertyName]=="undefined"){throw new Error(obj2_name+" does not contain "+propertyFullyQualifiedName+" in "+obj1_name);}else if(typeof obj2[propertyName]!=typeof obj1[propertyName]){throw new Error(obj2_name+"'s "+propertyFullyQualifiedName+" is of the wrong type: "+typeof obj2[propertyName]+" when it is type "+typeof obj1[propertyName]+" in "+obj1_name);}else if(obj1[propertyName]!=Function.prototype.apply){if(!compareObjectInterface(obj1[propertyName],obj1_name,obj2[propertyName],obj2_name,propertyFullyQualifiedName)){throw new Error("Interfaces don't match");}}}catch(ex){throw new Error("Exception while checking property name "+propertyFullyQualifiedName+" in "+obj2_name+": "+ex.message);}}}
|
|
24
|
+
return true;};var testLayoutWithVariables=function(layout,t){var emptyObject={};var emptyArray=[];var emptyString="";var localUndefined=emptyArray[0];var oneLevelObject={"name":"One-level object"};var twoLevelObject={"name":"Two-level object","data":oneLevelObject};var threeLevelObject={"name":"Three-level object","data":twoLevelObject};var anArray=[3,"stuff",true,false,0,null,localUndefined,3.14,function(p){return"I'm a function";},[1,"things"]];var arrayOfTestItems=[emptyObject,emptyString,emptyString,localUndefined,oneLevelObject,twoLevelObject,threeLevelObject,anArray];t.log("Testing layout "+layout)
|
|
25
|
+
for(var i=0;i<arrayOfTestItems.length;i++){var ex=new Error("Test error");var loggingEvent=new log4javascript.LoggingEvent(t.logger,new Date(),log4javascript.Level.INFO,[arrayOfTestItems[i]],null);t.log("Formatting",arrayOfTestItems[i],result);var result=layout.format(loggingEvent);loggingEvent.exception=ex;t.log("Formatting with exception",arrayOfTestItems[i],result);result=layout.format(loggingEvent);}};xn.test.enableTestDebug=true;xn.test.enable_log4javascript=false;xn.test.suite("log4javascript tests",function(s){log4javascript.logLog.setQuietMode(true);var ArrayAppender=function(layout){if(layout){this.setLayout(layout);}
|
|
26
|
+
this.logMessages=[];};ArrayAppender.prototype=new log4javascript.Appender();ArrayAppender.prototype.layout=new log4javascript.NullLayout();ArrayAppender.prototype.append=function(loggingEvent){var formattedMessage=this.getLayout().format(loggingEvent);if(this.getLayout().ignoresThrowable()){formattedMessage+=loggingEvent.getThrowableStrRep();}
|
|
27
|
+
this.logMessages.push(formattedMessage);};ArrayAppender.prototype.toString=function(){return"[ArrayAppender]";};s.setUp=function(t){t.logger=log4javascript.getLogger("test");t.logger.removeAllAppenders();t.appender=new ArrayAppender();t.logger.addAppender(t.appender);};s.tearDown=function(t){t.logger.removeAppender(t.appender);log4javascript.resetConfiguration();};s.test("Stub script interface test",function(t){try{compareObjectInterface(log4javascript,"log4javascript",log4javascript_stub,"log4javascript_stub");}catch(ex){t.fail(ex);}});s.test("Disable log4javascript test",function(t){log4javascript.setEnabled(false);t.logger.debug("TEST");t.assertEquals(t.appender.logMessages.length,0);log4javascript.setEnabled(true);});s.test("Array.splice test 1",function(t){var a=["Marlon","Ashley","Darius","Lloyd"];var deletedItems=a.splice(1,2);t.assertEquals(a.join(","),"Marlon,Lloyd");t.assertEquals(deletedItems.join(","),"Ashley,Darius");});s.test("Array.splice test 2",function(t){var a=["Marlon","Ashley","Darius","Lloyd"];var deletedItems=a.splice(1,1,"Malky","Jay");t.assertEquals(a.join(","),"Marlon,Malky,Jay,Darius,Lloyd");t.assertEquals(deletedItems.join(","),"Ashley");});s.test("array_remove test",function(t){var array_remove=log4javascript.evalInScope("array_remove");var a=["Marlon","Ashley","Darius"];array_remove(a,"Darius");t.assertEquals(a.join(","),"Marlon,Ashley");});s.test("array_remove with empty array test",function(t){var array_remove=log4javascript.evalInScope("array_remove");var a=[];array_remove(a,"Darius");t.assertEquals(a.join(","),"");});s.test("Logger logging test",function(t){t.logger.debug("TEST");t.assertEquals(t.appender.logMessages.length,1);});s.test("Logger levels test",function(t){var originalLevel=t.logger.getEffectiveLevel();t.logger.setLevel(log4javascript.Level.INFO);t.logger.debug("TEST");t.logger.setLevel(originalLevel);t.assertEquals(t.appender.logMessages.length,0);});s.test("Logger getEffectiveLevel inheritance test 1",function(t){var parentLogger=log4javascript.getLogger("test1");var childLogger=log4javascript.getLogger("test1.test2");parentLogger.setLevel(log4javascript.Level.ERROR);t.assertEquals(childLogger.getEffectiveLevel(),log4javascript.Level.ERROR);});s.test("Logger getEffectiveLevel inheritance test 2",function(t){var grandParentLogger=log4javascript.getLogger("test1");var childLogger=log4javascript.getLogger("test1.test2.test3");grandParentLogger.setLevel(log4javascript.Level.ERROR);t.assertEquals(childLogger.getEffectiveLevel(),log4javascript.Level.ERROR);});s.test("Logger getEffectiveLevel inheritance test 3",function(t){var parentLogger=log4javascript.getLogger("test1");var childLogger=log4javascript.getLogger("test1.test2");parentLogger.setLevel(log4javascript.Level.ERROR);childLogger.setLevel(log4javascript.Level.INFO);t.assertEquals(childLogger.getEffectiveLevel(),log4javascript.Level.INFO);});s.test("Logger getEffectiveLevel root inheritance test",function(t){var rootLogger=log4javascript.getRootLogger();var childLogger=log4javascript.getLogger("test1.test2.test3");rootLogger.setLevel(log4javascript.Level.WARN);t.assertEquals(childLogger.getEffectiveLevel(),log4javascript.Level.WARN);});s.test("Logger null level test",function(t){t.logger.setLevel(null);t.assertEquals(t.logger.getEffectiveLevel(),log4javascript.Level.DEBUG);});s.test("Logger appender additivity test 1",function(t){var parentLogger=log4javascript.getLogger("test1");var childLogger=log4javascript.getLogger("test1.test2");var parentLoggerAppender=new ArrayAppender();var childLoggerAppender=new ArrayAppender();parentLogger.addAppender(parentLoggerAppender);childLogger.addAppender(childLoggerAppender);parentLogger.info("Parent logger test message");childLogger.info("Child logger test message");t.assertEquals(parentLoggerAppender.logMessages.length,2);t.assertEquals(childLoggerAppender.logMessages.length,1);});s.test("Logger appender additivity test 2",function(t){var parentLogger=log4javascript.getLogger("test1");var childLogger=log4javascript.getLogger("test1.test2");var parentLoggerAppender=new ArrayAppender();var childLoggerAppender=new ArrayAppender();parentLogger.addAppender(parentLoggerAppender);childLogger.addAppender(childLoggerAppender);childLogger.setAdditivity(false);parentLogger.info("Parent logger test message");childLogger.info("Child logger test message");t.assertEquals(parentLoggerAppender.logMessages.length,1);t.assertEquals(childLoggerAppender.logMessages.length,1);});s.test("Logger appender additivity test 3",function(t){var parentLogger=log4javascript.getLogger("test1");var childLogger=log4javascript.getLogger("test1.test2");var parentLoggerAppender=new ArrayAppender();var childLoggerAppender=new ArrayAppender();parentLogger.addAppender(parentLoggerAppender);childLogger.addAppender(childLoggerAppender);childLogger.setAdditivity(false);parentLogger.info("Parent logger test message");childLogger.info("Child logger test message");childLogger.setAdditivity(true);childLogger.info("Child logger test message 2");t.assertEquals(parentLoggerAppender.logMessages.length,2);t.assertEquals(childLoggerAppender.logMessages.length,2);});s.test("Appender threshold test",function(t){t.appender.setThreshold(log4javascript.Level.INFO);t.logger.debug("TEST");t.assertEquals(t.appender.logMessages.length,0);});s.test("Basic appender / layout test",function(t){t.logger.debug("TEST");t.assertEquals(t.appender.logMessages[0],"TEST");});s.test("Appender uniqueness within logger test",function(t){t.logger.addAppender(t.appender);t.logger.debug("TEST");t.assertEquals(t.appender.logMessages.length,1);});s.test("Logger remove appender test",function(t){t.logger.debug("TEST");t.logger.removeAppender(t.appender);t.logger.debug("TEST AGAIN");t.assertEquals(t.appender.logMessages.length,1);});s.test("",function(t){t.logger.debug("TEST");t.logger.removeAppender(t.appender);t.logger.debug("TEST AGAIN");t.assertEquals(t.appender.logMessages.length,1);});s.test("SimpleLayout format test",function(t){var layout=new log4javascript.SimpleLayout();testLayoutWithVariables(layout,t);});s.test("SimpleLayout test",function(t){t.appender.setLayout(new log4javascript.SimpleLayout());t.logger.debug("TEST");t.assertEquals(t.appender.logMessages[0],"DEBUG - TEST");});s.test("NullLayout format test",function(t){var layout=new log4javascript.NullLayout();testLayoutWithVariables(layout,t);});s.test("NullLayout test",function(t){t.appender.setLayout(new log4javascript.NullLayout());t.logger.debug("TEST");t.assertEquals(t.appender.logMessages[0],"TEST");});s.test("XmlLayout format test",function(t){var layout=new log4javascript.XmlLayout();testLayoutWithVariables(layout,t);});s.test("XmlLayout test",function(t){t.appender.setLayout(new log4javascript.XmlLayout());t.logger.debug("TEST");t.assertRegexMatches(/^<log4javascript:event logger="test" timestamp="\d+" level="DEBUG">\s*<log4javascript:message><!\[CDATA\[TEST\]\]><\/log4javascript:message>\s*<\/log4javascript:event>\s*$/,t.appender.logMessages[0]);});s.test("XmlLayout with exception test",function(t){t.appender.setLayout(new log4javascript.XmlLayout());t.logger.debug("TEST",new Error("Test error"));t.assertRegexMatches(/^<log4javascript:event logger="test" timestamp="\d+" level="DEBUG">\s*<log4javascript:message><!\[CDATA\[TEST\]\]><\/log4javascript:message>\s*<log4javascript:exception>\s*<!\[CDATA\[.*\]\]><\/log4javascript:exception>\s*<\/log4javascript:event>\s*$/,t.appender.logMessages[0]);});var setUpXmlLayoutMillisecondsTest=function(t){t.date=new Date();t.timeInMilliseconds=t.date.getTime();t.timeInSeconds=Math.floor(t.timeInMilliseconds/1000);t.milliseconds=t.date.getMilliseconds();t.loggingEvent=new log4javascript.LoggingEvent(t.logger,t.date,log4javascript.Level.DEBUG,["TEST"],null);t.layout=new log4javascript.XmlLayout();}
|
|
28
|
+
s.test("XmlLayout seconds/milliseconds test 1",function(t){setUpXmlLayoutMillisecondsTest(t);var regex=new RegExp('^<log4javascript:event logger="test" timestamp="'+t.timeInMilliseconds+'" level="DEBUG">\\s*<log4javascript:message><!\\[CDATA\\[TEST\\]\\]></log4javascript:message>\\s*</log4javascript:event>\\s*$');t.assertRegexMatches(regex,t.layout.format(t.loggingEvent));});s.test("XmlLayout seconds/milliseconds test 2",function(t){setUpXmlLayoutMillisecondsTest(t);log4javascript.setTimeStampsInMilliseconds(false);var formatted=t.layout.format(t.loggingEvent);log4javascript.setTimeStampsInMilliseconds(true);var regex=new RegExp('^<log4javascript:event logger="test" timestamp="'+t.timeInSeconds+'" milliseconds="'+t.milliseconds+'" level="DEBUG">\\s*<log4javascript:message><!\\[CDATA\\[TEST\\]\\]></log4javascript:message>\\s*</log4javascript:event>\\s*$');t.assertRegexMatches(regex,formatted);});s.test("XmlLayout seconds/milliseconds test 3",function(t){setUpXmlLayoutMillisecondsTest(t);t.layout.setTimeStampsInMilliseconds(false);var formatted=t.layout.format(t.loggingEvent);var regex=new RegExp('^<log4javascript:event logger="test" timestamp="'+t.timeInSeconds+'" milliseconds="'+t.milliseconds+'" level="DEBUG">\\s*<log4javascript:message><!\\[CDATA\\[TEST\\]\\]></log4javascript:message>\\s*</log4javascript:event>\\s*$');t.assertRegexMatches(regex,formatted);});s.test("escapeNewLines test",function(t){var escapeNewLines=log4javascript.evalInScope("escapeNewLines");var str="1\r2\n3\n4\r\n5\r6\r\n7";t.assertEquals(escapeNewLines(str),"1\\r\\n2\\r\\n3\\r\\n4\\r\\n5\\r\\n6\\r\\n7");});s.test("JsonLayout format test",function(t){var layout=new log4javascript.JsonLayout();testLayoutWithVariables(layout,t);});s.test("JsonLayout test",function(t){t.appender.setLayout(new log4javascript.JsonLayout());t.logger.debug("TEST");t.assertRegexMatches(/^{"logger":"test","timestamp":\d+,"level":"DEBUG","url":".*","message":"TEST"}$/,t.appender.logMessages[0]);});s.test("JsonLayout JSON validity test",function(t){t.appender.setLayout(new log4javascript.JsonLayout());t.logger.debug("TEST");eval("var o = "+t.appender.logMessages[0]);t.assertEquals(o.message,"TEST");});s.test("JsonLayout with number type message test",function(t){t.appender.setLayout(new log4javascript.JsonLayout());t.logger.debug(15);t.assertRegexMatches(/^{"logger":"test","timestamp":\d+,"level":"DEBUG","url":".*","message":15}$/,t.appender.logMessages[0]);});s.test("JsonLayout with object type message test",function(t){t.appender.setLayout(new log4javascript.JsonLayout());t.logger.debug({});t.assertRegexMatches(/^{"logger":"test","timestamp":\d+,"level":"DEBUG","url":".*","message":"\[object Object\]"}$/,t.appender.logMessages[0]);});s.test("JsonLayout with boolean type message test",function(t){t.appender.setLayout(new log4javascript.JsonLayout());t.logger.debug(false);t.assertRegexMatches(/^{"logger":"test","timestamp":\d+,"level":"DEBUG","url":".*","message":false}$/,t.appender.logMessages[0]);});s.test("JsonLayout with quote test",function(t){t.appender.setLayout(new log4javascript.JsonLayout());t.logger.debug("TE\"S\"T");t.assertRegexMatches(/^{"logger":"test","timestamp":\d+,"level":"DEBUG","url":".*","message":"TE\\"S\\"T"}$/,t.appender.logMessages[0]);});s.test("JsonLayout with exception test",function(t){t.appender.setLayout(new log4javascript.JsonLayout());t.logger.debug("TEST",new Error("Test error"));t.assertRegexMatches(/^{"logger":"test","timestamp":\d+,"level":"DEBUG","url":".*","message":"TEST","exception":.*}$/,t.appender.logMessages[0]);});var setUpJsonLayoutMillisecondsTest=function(t){t.date=new Date();t.timeInMilliseconds=t.date.getTime();t.timeInSeconds=Math.floor(t.timeInMilliseconds/1000);t.milliseconds=t.date.getMilliseconds();t.loggingEvent=new log4javascript.LoggingEvent(t.logger,t.date,log4javascript.Level.DEBUG,["TEST"],null);t.layout=new log4javascript.JsonLayout();};s.test("JsonLayout seconds/milliseconds test 1",function(t){setUpJsonLayoutMillisecondsTest(t);var regex=new RegExp('^{"logger":"test","timestamp":'+t.timeInMilliseconds+',"level":"DEBUG","url":".*","message":"TEST"}$');t.assertRegexMatches(regex,t.layout.format(t.loggingEvent));});s.test("JsonLayout seconds/milliseconds test 2",function(t){setUpJsonLayoutMillisecondsTest(t);log4javascript.setTimeStampsInMilliseconds(false);var formatted=t.layout.format(t.loggingEvent);log4javascript.setTimeStampsInMilliseconds(true);var regex=new RegExp('^{"logger":"test","timestamp":'+t.timeInSeconds+',"level":"DEBUG","url":".*","message":"TEST","milliseconds":'+t.milliseconds+'}$');t.assertRegexMatches(regex,formatted);});s.test("JsonLayout seconds/milliseconds test 3",function(t){setUpJsonLayoutMillisecondsTest(t);t.layout.setTimeStampsInMilliseconds(false);var formatted=t.layout.format(t.loggingEvent);var regex=new RegExp('^{"logger":"test","timestamp":'+t.timeInSeconds+',"level":"DEBUG","url":".*","message":"TEST","milliseconds":'+t.milliseconds+'}$');t.assertRegexMatches(regex,formatted);});s.test("HttpPostDataLayout format test",function(t){var layout=new log4javascript.HttpPostDataLayout();testLayoutWithVariables(layout,t);});s.test("HttpPostDataLayout test",function(t){t.appender.setLayout(new log4javascript.HttpPostDataLayout());t.logger.debug("TEST");t.assertRegexMatches(/^logger=test×tamp=\d+&level=DEBUG&url=.*&message=TEST$/,t.appender.logMessages[0]);});s.test("HttpPostDataLayout URL encoding test",function(t){t.appender.setLayout(new log4javascript.HttpPostDataLayout());t.logger.debug("TEST +\"1\"");t.assertRegexMatches(/^logger=test×tamp=\d+&level=DEBUG&url=.*&message=TEST%20%2B%221%22$/,t.appender.logMessages[0]);});s.test("HttpPostDataLayout with exception test",function(t){t.appender.setLayout(new log4javascript.HttpPostDataLayout());t.logger.debug("TEST",new Error("Test error"));t.assertRegexMatches(/^logger=test×tamp=\d+&level=DEBUG&url=.*&message=TEST&exception=.*$/,t.appender.logMessages[0]);});(function(){var formatObjectExpansion=log4javascript.evalInScope("formatObjectExpansion");var newLine=log4javascript.evalInScope("newLine");var arr=[null,undefined,1.2,"A string",[1,"test"],{a:{b:1}}];s.test("Basic formatObjectExpansion array test (depth: 1)",function(t){t.assertEquals(formatObjectExpansion(arr,1),"["+newLine+" null,"+newLine+" undefined,"+newLine+" 1.2,"+newLine+" A string,"+newLine+" 1,test,"+newLine+" [object Object]"+newLine+"]");});s.test("Basic formatObjectExpansion array test (depth: 2)",function(t){t.assertEquals(formatObjectExpansion(arr,2),"["+newLine+" null,"+newLine+" undefined,"+newLine+" 1.2,"+newLine+" A string,"+newLine+" ["+newLine+" 1,"+newLine+" test"+newLine+" ],"+newLine+" {"+newLine+" a: [object Object]"+newLine+" }"+newLine+"]");});s.test("formatObjectExpansion simple object test",function(t){var obj={STRING:"A string"};t.assertEquals(formatObjectExpansion(obj,1),"{"+newLine+" STRING: A string"+newLine+"}");});s.test("formatObjectExpansion simple circular object test",function(t){var obj={};obj.a=obj;t.assertEquals(formatObjectExpansion(obj,2),"{"+newLine+" a: [object Object] [already expanded]"+newLine+"}");});})();var getSampleDate=function(){var date=new Date();date.setFullYear(2006);date.setMonth(7);date.setDate(30);date.setHours(15);date.setMinutes(38);date.setSeconds(45);return date;};s.test("String.replace test",function(t){t.assertEquals("Hello world".replace(/o/g,"Z"),"HellZ wZrld");});s.test("PatternLayout format test",function(t){var layout=new log4javascript.PatternLayout();testLayoutWithVariables(layout,t);});s.test("PatternLayout dates test",function(t){var layout=new log4javascript.PatternLayout("%d %d{DATE} %d{HH:ss}");t.appender.setLayout(layout);t.logger.debug("TEST");t.assertRegexMatches(/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3} \d{2} [A-Z][a-z]{2} \d{4} \d{2}:\d{2}:\d{2},\d{3} \d{2}:\d{2}$/,t.appender.logMessages[0]);});s.test("PatternLayout modifiers test",function(t){var layout=new log4javascript.PatternLayout("%m|%3m|%-3m|%6m|%-6m|%.2m|%1.2m|%6.8m|%-1.2m|%-6.8m|");t.appender.setLayout(layout);t.logger.debug("TEST");t.assertEquals(t.appender.logMessages[0],"TEST|TEST|TEST| TEST|TEST |ST|ST| TEST|ST|TEST |");});s.test("PatternLayout conversion characters test",function(t){var layout=new log4javascript.PatternLayout("%c %n %p %r literal %%");t.appender.setLayout(layout);t.logger.debug("TEST");t.assertRegexMatches(/^test \s+ DEBUG \d+ literal %$/,t.appender.logMessages[0]);});s.test("PatternLayout message test",function(t){var layout=new log4javascript.PatternLayout("%m{1} %m{2}");t.appender.setLayout(layout);var testObj={strikers:{quick:"Marlon"}};t.logger.debug(testObj);t.assertEquals("{\r\n strikers: [object Object]\r\n} {\r\n\ strikers: {\r\n quick: Marlon\r\n }\r\n}",t.appender.logMessages[0]);});s.test("Logging/grouping test",function(t){var browserConsoleAppender=new log4javascript.BrowserConsoleAppender();t.logger.addAppender(browserConsoleAppender);t.logger.trace("TEST TRACE");t.logger.debug("TEST DEBUG");t.logger.info("TEST INFO");t.logger.warn("TEST WARN");t.logger.error("TEST ERROR");t.logger.fatal("TEST FATAL");t.logger.fatal("TEST FATAL",new Error("Fake error"));t.logger.info("TEST INFO","Second message",["a","b","c"]);t.logger.group("TEST GROUP");t.logger.info("TEST INFO");t.logger.groupEnd("TEST GROUP");t.logger.info("TEST INFO");t.logger.removeAppender(browserConsoleAppender);});var testConsoleAppender=function(t,appender){var timeoutCallback=function(){return(windowLoaded?"Timed out while waiting for messages to appear":"Timed out while waiting for window to load")+". Debug messages: "+
|
|
29
|
+
log4javascript.logLog.debugMessages.join("\r\n");}
|
|
30
|
+
t.async(60000,timeoutCallback);var windowLoaded=false;var domChecked=false;var onLoadHandler=function(){log4javascript.logLog.debug("onLoadHandler");windowLoaded=true;var win=appender.getConsoleWindow();if(win&&win.loaded){var checkDom=function(){log4javascript.logLog.debug("checkDom");domChecked=true;var logContainer=win.logMainContainer;if(logContainer.hasChildNodes()){if(logContainer.innerHTML.indexOf("TEST MESSAGE")==-1){appender.close();t.fail("Log message not correctly logged (log container innerHTML: "+logContainer.innerHTML+")");}else{t.assert(appender.isVisible());appender.close();t.assert(!appender.isVisible());t.succeed();}}else{appender.close();t.fail("Console has no log messages");}}
|
|
31
|
+
window.setTimeout(checkDom,300);}else{appender.close();t.fail("Console mistakenly raised load event");}}
|
|
32
|
+
appender.addEventListener("load",onLoadHandler);t.logger.addAppender(appender);t.logger.debug("TEST MESSAGE");};s.test("InlineAppender test",function(t){var inlineAppender=new log4javascript.InlineAppender();inlineAppender.setInitiallyMinimized(false);inlineAppender.setNewestMessageAtTop(false);inlineAppender.setScrollToLatestMessage(true);inlineAppender.setWidth(600);inlineAppender.setHeight(200);testConsoleAppender(t,inlineAppender);});s.test("InPageAppender with separate console HTML file test",function(t){var inPageAppender=new log4javascript.InPageAppender();inPageAppender.setInitiallyMinimized(false);inPageAppender.setNewestMessageAtTop(false);inPageAppender.setScrollToLatestMessage(true);inPageAppender.setUseDocumentWrite(false);inPageAppender.setWidth(600);inPageAppender.setHeight(200);testConsoleAppender(t,inPageAppender);});s.test("PopUpAppender test",function(t){var popUpAppender=new log4javascript.PopUpAppender();popUpAppender.setFocusPopUp(true);popUpAppender.setUseOldPopUp(false);popUpAppender.setNewestMessageAtTop(false);popUpAppender.setScrollToLatestMessage(true);popUpAppender.setComplainAboutPopUpBlocking(false);popUpAppender.setWidth(600);popUpAppender.setHeight(200);testConsoleAppender(t,popUpAppender);});s.test("PopUpAppender with separate console HTML file test",function(t){var popUpAppender=new log4javascript.PopUpAppender();popUpAppender.setFocusPopUp(true);popUpAppender.setUseOldPopUp(false);popUpAppender.setNewestMessageAtTop(false);popUpAppender.setScrollToLatestMessage(true);popUpAppender.setComplainAboutPopUpBlocking(false);popUpAppender.setUseDocumentWrite(false);popUpAppender.setWidth(600);popUpAppender.setHeight(200);testConsoleAppender(t,popUpAppender);});});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2013 Tim Down.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
data/vendor/assets/javascripts/log4javascript-1.4.6/js/tests/log4javascript_lite_uncompressed.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2013 Tim Down.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2013 Tim Down.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
function array_contains(arr,val){for(var i=0;i<arr.length;i++){if(arr[i]==val){return true;}}
|
|
19
|
+
return false;}
|
|
20
|
+
function compareObjectInterface(obj1,obj1_name,obj2,obj2_name,namePrefix){if(!namePrefix){namePrefix="";}
|
|
21
|
+
var obj1PropertyNames=new Array();for(var i in obj1){if(i!="prototype"&&i!="arguments"){obj1PropertyNames.push(i);}}
|
|
22
|
+
if(obj1&&obj1.prototype&&!array_contains(obj1PropertyNames,"prototype")){}
|
|
23
|
+
for(var j=0;j<obj1PropertyNames.length;j++){var propertyName=obj1PropertyNames[j];if((typeof obj1[propertyName]=="function"||typeof obj1[propertyName]=="object")&&!(obj1[propertyName]instanceof Array)){var propertyFullyQualifiedName=(namePrefix=="")?propertyName:namePrefix+"."+propertyName;try{if(typeof obj2[propertyName]=="undefined"){throw new Error(obj2_name+" does not contain "+propertyFullyQualifiedName+" in "+obj1_name);}else if(typeof obj2[propertyName]!=typeof obj1[propertyName]){throw new Error(obj2_name+"'s "+propertyFullyQualifiedName+" is of the wrong type: "+typeof obj2[propertyName]+" when it is type "+typeof obj1[propertyName]+" in "+obj1_name);}else if(obj1[propertyName]!=Function.prototype.apply){if(!compareObjectInterface(obj1[propertyName],obj1_name,obj2[propertyName],obj2_name,propertyFullyQualifiedName)){throw new Error("Interfaces don't match");}}}catch(ex){throw new Error("Exception while checking property name "+propertyFullyQualifiedName+" in "+obj2_name+": "+ex.message);}}}
|
|
24
|
+
return true;};var testLayoutWithVariables=function(layout,t){var emptyObject={};var emptyArray=[];var emptyString="";var localUndefined=emptyArray[0];var oneLevelObject={"name":"One-level object"};var twoLevelObject={"name":"Two-level object","data":oneLevelObject};var threeLevelObject={"name":"Three-level object","data":twoLevelObject};var anArray=[3,"stuff",true,false,0,null,localUndefined,3.14,function(p){return"I'm a function";},[1,"things"]];var arrayOfTestItems=[emptyObject,emptyString,emptyString,localUndefined,oneLevelObject,twoLevelObject,threeLevelObject,anArray];t.log("Testing layout "+layout)
|
|
25
|
+
for(var i=0;i<arrayOfTestItems.length;i++){var ex=new Error("Test error");var loggingEvent=new log4javascript.LoggingEvent(t.logger,new Date(),log4javascript.Level.INFO,[arrayOfTestItems[i]],null);t.log("Formatting",arrayOfTestItems[i],result);var result=layout.format(loggingEvent);loggingEvent.exception=ex;t.log("Formatting with exception",arrayOfTestItems[i],result);result=layout.format(loggingEvent);}};xn.test.enableTestDebug=true;xn.test.enable_log4javascript=false;xn.test.suite("log4javascript tests",function(s){log4javascript.logLog.setQuietMode(true);var ArrayAppender=function(layout){if(layout){this.setLayout(layout);}
|
|
26
|
+
this.logMessages=[];};ArrayAppender.prototype=new log4javascript.Appender();ArrayAppender.prototype.layout=new log4javascript.NullLayout();ArrayAppender.prototype.append=function(loggingEvent){var formattedMessage=this.getLayout().format(loggingEvent);if(this.getLayout().ignoresThrowable()){formattedMessage+=loggingEvent.getThrowableStrRep();}
|
|
27
|
+
this.logMessages.push(formattedMessage);};ArrayAppender.prototype.toString=function(){return"[ArrayAppender]";};s.setUp=function(t){t.logger=log4javascript.getLogger("test");t.logger.removeAllAppenders();t.appender=new ArrayAppender();t.logger.addAppender(t.appender);};s.tearDown=function(t){t.logger.removeAppender(t.appender);log4javascript.resetConfiguration();};s.test("Stub script interface test",function(t){try{compareObjectInterface(log4javascript,"log4javascript",log4javascript_stub,"log4javascript_stub");}catch(ex){t.fail(ex);}});s.test("Disable log4javascript test",function(t){log4javascript.setEnabled(false);t.logger.debug("TEST");t.assertEquals(t.appender.logMessages.length,0);log4javascript.setEnabled(true);});s.test("Array.splice test 1",function(t){var a=["Marlon","Ashley","Darius","Lloyd"];var deletedItems=a.splice(1,2);t.assertEquals(a.join(","),"Marlon,Lloyd");t.assertEquals(deletedItems.join(","),"Ashley,Darius");});s.test("Array.splice test 2",function(t){var a=["Marlon","Ashley","Darius","Lloyd"];var deletedItems=a.splice(1,1,"Malky","Jay");t.assertEquals(a.join(","),"Marlon,Malky,Jay,Darius,Lloyd");t.assertEquals(deletedItems.join(","),"Ashley");});s.test("array_remove test",function(t){var array_remove=log4javascript.evalInScope("array_remove");var a=["Marlon","Ashley","Darius"];array_remove(a,"Darius");t.assertEquals(a.join(","),"Marlon,Ashley");});s.test("array_remove with empty array test",function(t){var array_remove=log4javascript.evalInScope("array_remove");var a=[];array_remove(a,"Darius");t.assertEquals(a.join(","),"");});s.test("Logger logging test",function(t){t.logger.debug("TEST");t.assertEquals(t.appender.logMessages.length,1);});s.test("Logger levels test",function(t){var originalLevel=t.logger.getEffectiveLevel();t.logger.setLevel(log4javascript.Level.INFO);t.logger.debug("TEST");t.logger.setLevel(originalLevel);t.assertEquals(t.appender.logMessages.length,0);});s.test("Logger getEffectiveLevel inheritance test 1",function(t){var parentLogger=log4javascript.getLogger("test1");var childLogger=log4javascript.getLogger("test1.test2");parentLogger.setLevel(log4javascript.Level.ERROR);t.assertEquals(childLogger.getEffectiveLevel(),log4javascript.Level.ERROR);});s.test("Logger getEffectiveLevel inheritance test 2",function(t){var grandParentLogger=log4javascript.getLogger("test1");var childLogger=log4javascript.getLogger("test1.test2.test3");grandParentLogger.setLevel(log4javascript.Level.ERROR);t.assertEquals(childLogger.getEffectiveLevel(),log4javascript.Level.ERROR);});s.test("Logger getEffectiveLevel inheritance test 3",function(t){var parentLogger=log4javascript.getLogger("test1");var childLogger=log4javascript.getLogger("test1.test2");parentLogger.setLevel(log4javascript.Level.ERROR);childLogger.setLevel(log4javascript.Level.INFO);t.assertEquals(childLogger.getEffectiveLevel(),log4javascript.Level.INFO);});s.test("Logger getEffectiveLevel root inheritance test",function(t){var rootLogger=log4javascript.getRootLogger();var childLogger=log4javascript.getLogger("test1.test2.test3");rootLogger.setLevel(log4javascript.Level.WARN);t.assertEquals(childLogger.getEffectiveLevel(),log4javascript.Level.WARN);});s.test("Logger null level test",function(t){t.logger.setLevel(null);t.assertEquals(t.logger.getEffectiveLevel(),log4javascript.Level.DEBUG);});s.test("Logger appender additivity test 1",function(t){var parentLogger=log4javascript.getLogger("test1");var childLogger=log4javascript.getLogger("test1.test2");var parentLoggerAppender=new ArrayAppender();var childLoggerAppender=new ArrayAppender();parentLogger.addAppender(parentLoggerAppender);childLogger.addAppender(childLoggerAppender);parentLogger.info("Parent logger test message");childLogger.info("Child logger test message");t.assertEquals(parentLoggerAppender.logMessages.length,2);t.assertEquals(childLoggerAppender.logMessages.length,1);});s.test("Logger appender additivity test 2",function(t){var parentLogger=log4javascript.getLogger("test1");var childLogger=log4javascript.getLogger("test1.test2");var parentLoggerAppender=new ArrayAppender();var childLoggerAppender=new ArrayAppender();parentLogger.addAppender(parentLoggerAppender);childLogger.addAppender(childLoggerAppender);childLogger.setAdditivity(false);parentLogger.info("Parent logger test message");childLogger.info("Child logger test message");t.assertEquals(parentLoggerAppender.logMessages.length,1);t.assertEquals(childLoggerAppender.logMessages.length,1);});s.test("Logger appender additivity test 3",function(t){var parentLogger=log4javascript.getLogger("test1");var childLogger=log4javascript.getLogger("test1.test2");var parentLoggerAppender=new ArrayAppender();var childLoggerAppender=new ArrayAppender();parentLogger.addAppender(parentLoggerAppender);childLogger.addAppender(childLoggerAppender);childLogger.setAdditivity(false);parentLogger.info("Parent logger test message");childLogger.info("Child logger test message");childLogger.setAdditivity(true);childLogger.info("Child logger test message 2");t.assertEquals(parentLoggerAppender.logMessages.length,2);t.assertEquals(childLoggerAppender.logMessages.length,2);});s.test("Appender threshold test",function(t){t.appender.setThreshold(log4javascript.Level.INFO);t.logger.debug("TEST");t.assertEquals(t.appender.logMessages.length,0);});s.test("Basic appender / layout test",function(t){t.logger.debug("TEST");t.assertEquals(t.appender.logMessages[0],"TEST");});s.test("Appender uniqueness within logger test",function(t){t.logger.addAppender(t.appender);t.logger.debug("TEST");t.assertEquals(t.appender.logMessages.length,1);});s.test("Logger remove appender test",function(t){t.logger.debug("TEST");t.logger.removeAppender(t.appender);t.logger.debug("TEST AGAIN");t.assertEquals(t.appender.logMessages.length,1);});s.test("",function(t){t.logger.debug("TEST");t.logger.removeAppender(t.appender);t.logger.debug("TEST AGAIN");t.assertEquals(t.appender.logMessages.length,1);});s.test("SimpleLayout format test",function(t){var layout=new log4javascript.SimpleLayout();testLayoutWithVariables(layout,t);});s.test("SimpleLayout test",function(t){t.appender.setLayout(new log4javascript.SimpleLayout());t.logger.debug("TEST");t.assertEquals(t.appender.logMessages[0],"DEBUG - TEST");});s.test("NullLayout format test",function(t){var layout=new log4javascript.NullLayout();testLayoutWithVariables(layout,t);});s.test("NullLayout test",function(t){t.appender.setLayout(new log4javascript.NullLayout());t.logger.debug("TEST");t.assertEquals(t.appender.logMessages[0],"TEST");});s.test("XmlLayout format test",function(t){var layout=new log4javascript.XmlLayout();testLayoutWithVariables(layout,t);});s.test("XmlLayout test",function(t){t.appender.setLayout(new log4javascript.XmlLayout());t.logger.debug("TEST");t.assertRegexMatches(/^<log4javascript:event logger="test" timestamp="\d+" level="DEBUG">\s*<log4javascript:message><!\[CDATA\[TEST\]\]><\/log4javascript:message>\s*<\/log4javascript:event>\s*$/,t.appender.logMessages[0]);});s.test("XmlLayout with exception test",function(t){t.appender.setLayout(new log4javascript.XmlLayout());t.logger.debug("TEST",new Error("Test error"));t.assertRegexMatches(/^<log4javascript:event logger="test" timestamp="\d+" level="DEBUG">\s*<log4javascript:message><!\[CDATA\[TEST\]\]><\/log4javascript:message>\s*<log4javascript:exception>\s*<!\[CDATA\[.*\]\]><\/log4javascript:exception>\s*<\/log4javascript:event>\s*$/,t.appender.logMessages[0]);});var setUpXmlLayoutMillisecondsTest=function(t){t.date=new Date();t.timeInMilliseconds=t.date.getTime();t.timeInSeconds=Math.floor(t.timeInMilliseconds/1000);t.milliseconds=t.date.getMilliseconds();t.loggingEvent=new log4javascript.LoggingEvent(t.logger,t.date,log4javascript.Level.DEBUG,["TEST"],null);t.layout=new log4javascript.XmlLayout();}
|
|
28
|
+
s.test("XmlLayout seconds/milliseconds test 1",function(t){setUpXmlLayoutMillisecondsTest(t);var regex=new RegExp('^<log4javascript:event logger="test" timestamp="'+t.timeInMilliseconds+'" level="DEBUG">\\s*<log4javascript:message><!\\[CDATA\\[TEST\\]\\]></log4javascript:message>\\s*</log4javascript:event>\\s*$');t.assertRegexMatches(regex,t.layout.format(t.loggingEvent));});s.test("XmlLayout seconds/milliseconds test 2",function(t){setUpXmlLayoutMillisecondsTest(t);log4javascript.setTimeStampsInMilliseconds(false);var formatted=t.layout.format(t.loggingEvent);log4javascript.setTimeStampsInMilliseconds(true);var regex=new RegExp('^<log4javascript:event logger="test" timestamp="'+t.timeInSeconds+'" milliseconds="'+t.milliseconds+'" level="DEBUG">\\s*<log4javascript:message><!\\[CDATA\\[TEST\\]\\]></log4javascript:message>\\s*</log4javascript:event>\\s*$');t.assertRegexMatches(regex,formatted);});s.test("XmlLayout seconds/milliseconds test 3",function(t){setUpXmlLayoutMillisecondsTest(t);t.layout.setTimeStampsInMilliseconds(false);var formatted=t.layout.format(t.loggingEvent);var regex=new RegExp('^<log4javascript:event logger="test" timestamp="'+t.timeInSeconds+'" milliseconds="'+t.milliseconds+'" level="DEBUG">\\s*<log4javascript:message><!\\[CDATA\\[TEST\\]\\]></log4javascript:message>\\s*</log4javascript:event>\\s*$');t.assertRegexMatches(regex,formatted);});s.test("escapeNewLines test",function(t){var escapeNewLines=log4javascript.evalInScope("escapeNewLines");var str="1\r2\n3\n4\r\n5\r6\r\n7";t.assertEquals(escapeNewLines(str),"1\\r\\n2\\r\\n3\\r\\n4\\r\\n5\\r\\n6\\r\\n7");});s.test("JsonLayout format test",function(t){var layout=new log4javascript.JsonLayout();testLayoutWithVariables(layout,t);});s.test("JsonLayout test",function(t){t.appender.setLayout(new log4javascript.JsonLayout());t.logger.debug("TEST");t.assertRegexMatches(/^{"logger":"test","timestamp":\d+,"level":"DEBUG","url":".*","message":"TEST"}$/,t.appender.logMessages[0]);});s.test("JsonLayout JSON validity test",function(t){t.appender.setLayout(new log4javascript.JsonLayout());t.logger.debug("TEST");eval("var o = "+t.appender.logMessages[0]);t.assertEquals(o.message,"TEST");});s.test("JsonLayout with number type message test",function(t){t.appender.setLayout(new log4javascript.JsonLayout());t.logger.debug(15);t.assertRegexMatches(/^{"logger":"test","timestamp":\d+,"level":"DEBUG","url":".*","message":15}$/,t.appender.logMessages[0]);});s.test("JsonLayout with object type message test",function(t){t.appender.setLayout(new log4javascript.JsonLayout());t.logger.debug({});t.assertRegexMatches(/^{"logger":"test","timestamp":\d+,"level":"DEBUG","url":".*","message":"\[object Object\]"}$/,t.appender.logMessages[0]);});s.test("JsonLayout with boolean type message test",function(t){t.appender.setLayout(new log4javascript.JsonLayout());t.logger.debug(false);t.assertRegexMatches(/^{"logger":"test","timestamp":\d+,"level":"DEBUG","url":".*","message":false}$/,t.appender.logMessages[0]);});s.test("JsonLayout with quote test",function(t){t.appender.setLayout(new log4javascript.JsonLayout());t.logger.debug("TE\"S\"T");t.assertRegexMatches(/^{"logger":"test","timestamp":\d+,"level":"DEBUG","url":".*","message":"TE\\"S\\"T"}$/,t.appender.logMessages[0]);});s.test("JsonLayout with exception test",function(t){t.appender.setLayout(new log4javascript.JsonLayout());t.logger.debug("TEST",new Error("Test error"));t.assertRegexMatches(/^{"logger":"test","timestamp":\d+,"level":"DEBUG","url":".*","message":"TEST","exception":.*}$/,t.appender.logMessages[0]);});var setUpJsonLayoutMillisecondsTest=function(t){t.date=new Date();t.timeInMilliseconds=t.date.getTime();t.timeInSeconds=Math.floor(t.timeInMilliseconds/1000);t.milliseconds=t.date.getMilliseconds();t.loggingEvent=new log4javascript.LoggingEvent(t.logger,t.date,log4javascript.Level.DEBUG,["TEST"],null);t.layout=new log4javascript.JsonLayout();};s.test("JsonLayout seconds/milliseconds test 1",function(t){setUpJsonLayoutMillisecondsTest(t);var regex=new RegExp('^{"logger":"test","timestamp":'+t.timeInMilliseconds+',"level":"DEBUG","url":".*","message":"TEST"}$');t.assertRegexMatches(regex,t.layout.format(t.loggingEvent));});s.test("JsonLayout seconds/milliseconds test 2",function(t){setUpJsonLayoutMillisecondsTest(t);log4javascript.setTimeStampsInMilliseconds(false);var formatted=t.layout.format(t.loggingEvent);log4javascript.setTimeStampsInMilliseconds(true);var regex=new RegExp('^{"logger":"test","timestamp":'+t.timeInSeconds+',"level":"DEBUG","url":".*","message":"TEST","milliseconds":'+t.milliseconds+'}$');t.assertRegexMatches(regex,formatted);});s.test("JsonLayout seconds/milliseconds test 3",function(t){setUpJsonLayoutMillisecondsTest(t);t.layout.setTimeStampsInMilliseconds(false);var formatted=t.layout.format(t.loggingEvent);var regex=new RegExp('^{"logger":"test","timestamp":'+t.timeInSeconds+',"level":"DEBUG","url":".*","message":"TEST","milliseconds":'+t.milliseconds+'}$');t.assertRegexMatches(regex,formatted);});s.test("HttpPostDataLayout format test",function(t){var layout=new log4javascript.HttpPostDataLayout();testLayoutWithVariables(layout,t);});s.test("HttpPostDataLayout test",function(t){t.appender.setLayout(new log4javascript.HttpPostDataLayout());t.logger.debug("TEST");t.assertRegexMatches(/^logger=test×tamp=\d+&level=DEBUG&url=.*&message=TEST$/,t.appender.logMessages[0]);});s.test("HttpPostDataLayout URL encoding test",function(t){t.appender.setLayout(new log4javascript.HttpPostDataLayout());t.logger.debug("TEST +\"1\"");t.assertRegexMatches(/^logger=test×tamp=\d+&level=DEBUG&url=.*&message=TEST%20%2B%221%22$/,t.appender.logMessages[0]);});s.test("HttpPostDataLayout with exception test",function(t){t.appender.setLayout(new log4javascript.HttpPostDataLayout());t.logger.debug("TEST",new Error("Test error"));t.assertRegexMatches(/^logger=test×tamp=\d+&level=DEBUG&url=.*&message=TEST&exception=.*$/,t.appender.logMessages[0]);});(function(){var formatObjectExpansion=log4javascript.evalInScope("formatObjectExpansion");var newLine=log4javascript.evalInScope("newLine");var arr=[null,undefined,1.2,"A string",[1,"test"],{a:{b:1}}];s.test("Basic formatObjectExpansion array test (depth: 1)",function(t){t.assertEquals(formatObjectExpansion(arr,1),"["+newLine+" null,"+newLine+" undefined,"+newLine+" 1.2,"+newLine+" A string,"+newLine+" 1,test,"+newLine+" [object Object]"+newLine+"]");});s.test("Basic formatObjectExpansion array test (depth: 2)",function(t){t.assertEquals(formatObjectExpansion(arr,2),"["+newLine+" null,"+newLine+" undefined,"+newLine+" 1.2,"+newLine+" A string,"+newLine+" ["+newLine+" 1,"+newLine+" test"+newLine+" ],"+newLine+" {"+newLine+" a: [object Object]"+newLine+" }"+newLine+"]");});s.test("formatObjectExpansion simple object test",function(t){var obj={STRING:"A string"};t.assertEquals(formatObjectExpansion(obj,1),"{"+newLine+" STRING: A string"+newLine+"}");});s.test("formatObjectExpansion simple circular object test",function(t){var obj={};obj.a=obj;t.assertEquals(formatObjectExpansion(obj,2),"{"+newLine+" a: [object Object] [already expanded]"+newLine+"}");});})();var getSampleDate=function(){var date=new Date();date.setFullYear(2006);date.setMonth(7);date.setDate(30);date.setHours(15);date.setMinutes(38);date.setSeconds(45);return date;};s.test("String.replace test",function(t){t.assertEquals("Hello world".replace(/o/g,"Z"),"HellZ wZrld");});s.test("PatternLayout format test",function(t){var layout=new log4javascript.PatternLayout();testLayoutWithVariables(layout,t);});s.test("PatternLayout dates test",function(t){var layout=new log4javascript.PatternLayout("%d %d{DATE} %d{HH:ss}");t.appender.setLayout(layout);t.logger.debug("TEST");t.assertRegexMatches(/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3} \d{2} [A-Z][a-z]{2} \d{4} \d{2}:\d{2}:\d{2},\d{3} \d{2}:\d{2}$/,t.appender.logMessages[0]);});s.test("PatternLayout modifiers test",function(t){var layout=new log4javascript.PatternLayout("%m|%3m|%-3m|%6m|%-6m|%.2m|%1.2m|%6.8m|%-1.2m|%-6.8m|");t.appender.setLayout(layout);t.logger.debug("TEST");t.assertEquals(t.appender.logMessages[0],"TEST|TEST|TEST| TEST|TEST |ST|ST| TEST|ST|TEST |");});s.test("PatternLayout conversion characters test",function(t){var layout=new log4javascript.PatternLayout("%c %n %p %r literal %%");t.appender.setLayout(layout);t.logger.debug("TEST");t.assertRegexMatches(/^test \s+ DEBUG \d+ literal %$/,t.appender.logMessages[0]);});s.test("PatternLayout message test",function(t){var layout=new log4javascript.PatternLayout("%m{1} %m{2}");t.appender.setLayout(layout);var testObj={strikers:{quick:"Marlon"}};t.logger.debug(testObj);t.assertEquals("{\r\n strikers: [object Object]\r\n} {\r\n\ strikers: {\r\n quick: Marlon\r\n }\r\n}",t.appender.logMessages[0]);});});
|
|
@@ -0,0 +1,728 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2013 Tim Down.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
function array_contains(arr, val) {
|
|
18
|
+
for (var i = 0; i < arr.length; i++) {
|
|
19
|
+
if (arr[i] == val) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Recursively checks that obj2's interface contains all of obj1's
|
|
27
|
+
// interface (functions and objects only)
|
|
28
|
+
function compareObjectInterface(obj1, obj1_name, obj2, obj2_name, namePrefix) {
|
|
29
|
+
if (!namePrefix) {
|
|
30
|
+
namePrefix = "";
|
|
31
|
+
}
|
|
32
|
+
var obj1PropertyNames = new Array();
|
|
33
|
+
for (var i in obj1) {
|
|
34
|
+
if (i != "prototype" && i != "arguments") {
|
|
35
|
+
obj1PropertyNames.push(i);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (obj1 && obj1.prototype && !array_contains(obj1PropertyNames, "prototype")) {
|
|
39
|
+
//obj1PropertyNames.push("prototype");
|
|
40
|
+
}
|
|
41
|
+
for (var j = 0; j < obj1PropertyNames.length; j++) {
|
|
42
|
+
var propertyName = obj1PropertyNames[j];
|
|
43
|
+
if ((typeof obj1[propertyName] == "function" || typeof obj1[propertyName] == "object") && !(obj1[propertyName] instanceof Array)) {
|
|
44
|
+
var propertyFullyQualifiedName = (namePrefix == "") ? propertyName : namePrefix + "." + propertyName;
|
|
45
|
+
try {
|
|
46
|
+
if (typeof obj2[propertyName] == "undefined") {
|
|
47
|
+
throw new Error(obj2_name + " does not contain " + propertyFullyQualifiedName + " in " + obj1_name);
|
|
48
|
+
} else if (typeof obj2[propertyName] != typeof obj1[propertyName]){
|
|
49
|
+
throw new Error(obj2_name + "'s " + propertyFullyQualifiedName + " is of the wrong type: " + typeof obj2[propertyName] + " when it is type " + typeof obj1[propertyName] + " in " + obj1_name);
|
|
50
|
+
} else if (obj1[propertyName] != Function.prototype.apply) {
|
|
51
|
+
if (!compareObjectInterface(obj1[propertyName], obj1_name, obj2[propertyName], obj2_name, propertyFullyQualifiedName)) {
|
|
52
|
+
throw new Error("Interfaces don't match");
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
} catch(ex) {
|
|
56
|
+
throw new Error("Exception while checking property name " + propertyFullyQualifiedName + " in " + obj2_name + ": " + ex.message);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return true;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
// Simply tests a layout for exceptions when formatting
|
|
64
|
+
var testLayoutWithVariables = function(layout, t) {
|
|
65
|
+
var emptyObject = {};
|
|
66
|
+
var emptyArray = [];
|
|
67
|
+
var emptyString = "";
|
|
68
|
+
var localUndefined = emptyArray[0];
|
|
69
|
+
var oneLevelObject = {
|
|
70
|
+
"name": "One-level object"
|
|
71
|
+
};
|
|
72
|
+
var twoLevelObject = {
|
|
73
|
+
"name": "Two-level object",
|
|
74
|
+
"data": oneLevelObject
|
|
75
|
+
};
|
|
76
|
+
var threeLevelObject = {
|
|
77
|
+
"name": "Three-level object",
|
|
78
|
+
"data": twoLevelObject
|
|
79
|
+
};
|
|
80
|
+
var anArray = [
|
|
81
|
+
3,
|
|
82
|
+
"stuff",
|
|
83
|
+
true,
|
|
84
|
+
false,
|
|
85
|
+
0,
|
|
86
|
+
null,
|
|
87
|
+
localUndefined,
|
|
88
|
+
3.14,
|
|
89
|
+
function(p) { return "I'm a function"; },
|
|
90
|
+
[1, "things"]
|
|
91
|
+
];
|
|
92
|
+
var arrayOfTestItems = [emptyObject, emptyString, emptyString, localUndefined, oneLevelObject,
|
|
93
|
+
twoLevelObject, threeLevelObject, anArray];
|
|
94
|
+
|
|
95
|
+
t.log("Testing layout " + layout)
|
|
96
|
+
for (var i = 0; i < arrayOfTestItems.length; i++) {
|
|
97
|
+
var ex = new Error("Test error");
|
|
98
|
+
var loggingEvent = new log4javascript.LoggingEvent(t.logger, new Date(), log4javascript.Level.INFO,
|
|
99
|
+
[arrayOfTestItems[i]], null);
|
|
100
|
+
t.log("Formatting", arrayOfTestItems[i], result);
|
|
101
|
+
var result = layout.format(loggingEvent);
|
|
102
|
+
// Now try with an exception
|
|
103
|
+
loggingEvent.exception = ex;
|
|
104
|
+
t.log("Formatting with exception", arrayOfTestItems[i], result);
|
|
105
|
+
result = layout.format(loggingEvent);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
xn.test.enableTestDebug = true;
|
|
110
|
+
xn.test.enable_log4javascript = false;
|
|
111
|
+
|
|
112
|
+
xn.test.suite("log4javascript tests", function(s) {
|
|
113
|
+
log4javascript.logLog.setQuietMode(true);
|
|
114
|
+
var ArrayAppender = function(layout) {
|
|
115
|
+
if (layout) {
|
|
116
|
+
this.setLayout(layout);
|
|
117
|
+
}
|
|
118
|
+
this.logMessages = [];
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
ArrayAppender.prototype = new log4javascript.Appender();
|
|
122
|
+
|
|
123
|
+
ArrayAppender.prototype.layout = new log4javascript.NullLayout();
|
|
124
|
+
|
|
125
|
+
ArrayAppender.prototype.append = function(loggingEvent) {
|
|
126
|
+
var formattedMessage = this.getLayout().format(loggingEvent);
|
|
127
|
+
if (this.getLayout().ignoresThrowable()) {
|
|
128
|
+
formattedMessage += loggingEvent.getThrowableStrRep();
|
|
129
|
+
}
|
|
130
|
+
this.logMessages.push(formattedMessage);
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
ArrayAppender.prototype.toString = function() {
|
|
134
|
+
return "[ArrayAppender]";
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
s.setUp = function(t) {
|
|
138
|
+
t.logger = log4javascript.getLogger("test");
|
|
139
|
+
t.logger.removeAllAppenders();
|
|
140
|
+
t.appender = new ArrayAppender();
|
|
141
|
+
t.logger.addAppender(t.appender);
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
s.tearDown = function(t) {
|
|
145
|
+
t.logger.removeAppender(t.appender);
|
|
146
|
+
log4javascript.resetConfiguration();
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
s.test("Stub script interface test", function(t) {
|
|
150
|
+
try {
|
|
151
|
+
compareObjectInterface(log4javascript, "log4javascript", log4javascript_stub, "log4javascript_stub");
|
|
152
|
+
} catch (ex) {
|
|
153
|
+
t.fail(ex);
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
s.test("Disable log4javascript test", function(t) {
|
|
158
|
+
log4javascript.setEnabled(false);
|
|
159
|
+
t.logger.debug("TEST");
|
|
160
|
+
t.assertEquals(t.appender.logMessages.length, 0);
|
|
161
|
+
log4javascript.setEnabled(true);
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
s.test("Array.splice test 1", function(t) {
|
|
165
|
+
var a = ["Marlon", "Ashley", "Darius", "Lloyd"];
|
|
166
|
+
var deletedItems = a.splice(1, 2);
|
|
167
|
+
t.assertEquals(a.join(","), "Marlon,Lloyd");
|
|
168
|
+
t.assertEquals(deletedItems.join(","), "Ashley,Darius");
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
s.test("Array.splice test 2", function(t) {
|
|
172
|
+
var a = ["Marlon", "Ashley", "Darius", "Lloyd"];
|
|
173
|
+
var deletedItems = a.splice(1, 1, "Malky", "Jay");
|
|
174
|
+
t.assertEquals(a.join(","), "Marlon,Malky,Jay,Darius,Lloyd");
|
|
175
|
+
t.assertEquals(deletedItems.join(","), "Ashley");
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
s.test("array_remove test", function(t) {
|
|
179
|
+
var array_remove = log4javascript.evalInScope("array_remove");
|
|
180
|
+
var a = ["Marlon", "Ashley", "Darius"];
|
|
181
|
+
array_remove(a, "Darius");
|
|
182
|
+
t.assertEquals(a.join(","), "Marlon,Ashley");
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
s.test("array_remove with empty array test", function(t) {
|
|
186
|
+
var array_remove = log4javascript.evalInScope("array_remove");
|
|
187
|
+
var a = [];
|
|
188
|
+
array_remove(a, "Darius");
|
|
189
|
+
t.assertEquals(a.join(","), "");
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
s.test("Logger logging test", function(t) {
|
|
193
|
+
// Should log since the default level for loggers is DEBUG and
|
|
194
|
+
// the default threshold for appenders is ALL
|
|
195
|
+
t.logger.debug("TEST");
|
|
196
|
+
t.assertEquals(t.appender.logMessages.length, 1);
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
s.test("Logger levels test", function(t) {
|
|
200
|
+
var originalLevel = t.logger.getEffectiveLevel();
|
|
201
|
+
t.logger.setLevel(log4javascript.Level.INFO);
|
|
202
|
+
t.logger.debug("TEST");
|
|
203
|
+
t.logger.setLevel(originalLevel);
|
|
204
|
+
t.assertEquals(t.appender.logMessages.length, 0);
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
s.test("Logger getEffectiveLevel inheritance test 1", function(t) {
|
|
208
|
+
var parentLogger = log4javascript.getLogger("test1");
|
|
209
|
+
var childLogger = log4javascript.getLogger("test1.test2");
|
|
210
|
+
parentLogger.setLevel(log4javascript.Level.ERROR);
|
|
211
|
+
t.assertEquals(childLogger.getEffectiveLevel(), log4javascript.Level.ERROR);
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
s.test("Logger getEffectiveLevel inheritance test 2", function(t) {
|
|
215
|
+
var grandParentLogger = log4javascript.getLogger("test1");
|
|
216
|
+
var childLogger = log4javascript.getLogger("test1.test2.test3");
|
|
217
|
+
grandParentLogger.setLevel(log4javascript.Level.ERROR);
|
|
218
|
+
t.assertEquals(childLogger.getEffectiveLevel(), log4javascript.Level.ERROR);
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
s.test("Logger getEffectiveLevel inheritance test 3", function(t) {
|
|
222
|
+
var parentLogger = log4javascript.getLogger("test1");
|
|
223
|
+
var childLogger = log4javascript.getLogger("test1.test2");
|
|
224
|
+
parentLogger.setLevel(log4javascript.Level.ERROR);
|
|
225
|
+
childLogger.setLevel(log4javascript.Level.INFO);
|
|
226
|
+
t.assertEquals(childLogger.getEffectiveLevel(), log4javascript.Level.INFO);
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
s.test("Logger getEffectiveLevel root inheritance test", function(t) {
|
|
230
|
+
var rootLogger = log4javascript.getRootLogger();
|
|
231
|
+
var childLogger = log4javascript.getLogger("test1.test2.test3");
|
|
232
|
+
rootLogger.setLevel(log4javascript.Level.WARN);
|
|
233
|
+
t.assertEquals(childLogger.getEffectiveLevel(), log4javascript.Level.WARN);
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
s.test("Logger null level test", function(t) {
|
|
237
|
+
t.logger.setLevel(null);
|
|
238
|
+
// Should default to root logger level, which is DEBUG
|
|
239
|
+
t.assertEquals(t.logger.getEffectiveLevel(), log4javascript.Level.DEBUG);
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
s.test("Logger appender additivity test 1", function(t) {
|
|
243
|
+
var parentLogger = log4javascript.getLogger("test1");
|
|
244
|
+
var childLogger = log4javascript.getLogger("test1.test2");
|
|
245
|
+
var parentLoggerAppender = new ArrayAppender();
|
|
246
|
+
var childLoggerAppender = new ArrayAppender();
|
|
247
|
+
|
|
248
|
+
parentLogger.addAppender(parentLoggerAppender);
|
|
249
|
+
childLogger.addAppender(childLoggerAppender);
|
|
250
|
+
|
|
251
|
+
parentLogger.info("Parent logger test message");
|
|
252
|
+
childLogger.info("Child logger test message");
|
|
253
|
+
|
|
254
|
+
t.assertEquals(parentLoggerAppender.logMessages.length, 2);
|
|
255
|
+
t.assertEquals(childLoggerAppender.logMessages.length, 1);
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
s.test("Logger appender additivity test 2", function(t) {
|
|
259
|
+
var parentLogger = log4javascript.getLogger("test1");
|
|
260
|
+
var childLogger = log4javascript.getLogger("test1.test2");
|
|
261
|
+
var parentLoggerAppender = new ArrayAppender();
|
|
262
|
+
var childLoggerAppender = new ArrayAppender();
|
|
263
|
+
|
|
264
|
+
parentLogger.addAppender(parentLoggerAppender);
|
|
265
|
+
childLogger.addAppender(childLoggerAppender);
|
|
266
|
+
|
|
267
|
+
childLogger.setAdditivity(false);
|
|
268
|
+
|
|
269
|
+
parentLogger.info("Parent logger test message");
|
|
270
|
+
childLogger.info("Child logger test message");
|
|
271
|
+
|
|
272
|
+
t.assertEquals(parentLoggerAppender.logMessages.length, 1);
|
|
273
|
+
t.assertEquals(childLoggerAppender.logMessages.length, 1);
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
s.test("Logger appender additivity test 3", function(t) {
|
|
277
|
+
var parentLogger = log4javascript.getLogger("test1");
|
|
278
|
+
var childLogger = log4javascript.getLogger("test1.test2");
|
|
279
|
+
var parentLoggerAppender = new ArrayAppender();
|
|
280
|
+
var childLoggerAppender = new ArrayAppender();
|
|
281
|
+
|
|
282
|
+
parentLogger.addAppender(parentLoggerAppender);
|
|
283
|
+
childLogger.addAppender(childLoggerAppender);
|
|
284
|
+
|
|
285
|
+
childLogger.setAdditivity(false);
|
|
286
|
+
|
|
287
|
+
parentLogger.info("Parent logger test message");
|
|
288
|
+
childLogger.info("Child logger test message");
|
|
289
|
+
|
|
290
|
+
childLogger.setAdditivity(true);
|
|
291
|
+
|
|
292
|
+
childLogger.info("Child logger test message 2");
|
|
293
|
+
|
|
294
|
+
t.assertEquals(parentLoggerAppender.logMessages.length, 2);
|
|
295
|
+
t.assertEquals(childLoggerAppender.logMessages.length, 2);
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
s.test("Appender threshold test", function(t) {
|
|
299
|
+
t.appender.setThreshold(log4javascript.Level.INFO);
|
|
300
|
+
t.logger.debug("TEST");
|
|
301
|
+
t.assertEquals(t.appender.logMessages.length, 0);
|
|
302
|
+
});
|
|
303
|
+
|
|
304
|
+
s.test("Basic appender / layout test", function(t) {
|
|
305
|
+
t.logger.debug("TEST");
|
|
306
|
+
t.assertEquals(t.appender.logMessages[0], "TEST");
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
s.test("Appender uniqueness within logger test", function(t) {
|
|
310
|
+
// Add the same appender to the logger for a second time
|
|
311
|
+
t.logger.addAppender(t.appender);
|
|
312
|
+
t.logger.debug("TEST");
|
|
313
|
+
t.assertEquals(t.appender.logMessages.length, 1);
|
|
314
|
+
});
|
|
315
|
+
|
|
316
|
+
s.test("Logger remove appender test", function(t) {
|
|
317
|
+
t.logger.debug("TEST");
|
|
318
|
+
t.logger.removeAppender(t.appender);
|
|
319
|
+
t.logger.debug("TEST AGAIN");
|
|
320
|
+
t.assertEquals(t.appender.logMessages.length, 1);
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
s.test("", function(t) {
|
|
324
|
+
t.logger.debug("TEST");
|
|
325
|
+
t.logger.removeAppender(t.appender);
|
|
326
|
+
t.logger.debug("TEST AGAIN");
|
|
327
|
+
t.assertEquals(t.appender.logMessages.length, 1);
|
|
328
|
+
});
|
|
329
|
+
s.test("SimpleLayout format test", function(t) {
|
|
330
|
+
var layout = new log4javascript.SimpleLayout();
|
|
331
|
+
testLayoutWithVariables(layout, t);
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
s.test("SimpleLayout test", function(t) {
|
|
335
|
+
t.appender.setLayout(new log4javascript.SimpleLayout());
|
|
336
|
+
t.logger.debug("TEST");
|
|
337
|
+
t.assertEquals(t.appender.logMessages[0], "DEBUG - TEST");
|
|
338
|
+
});
|
|
339
|
+
s.test("NullLayout format test", function(t) {
|
|
340
|
+
var layout = new log4javascript.NullLayout();
|
|
341
|
+
testLayoutWithVariables(layout, t);
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
s.test("NullLayout test", function(t) {
|
|
345
|
+
t.appender.setLayout(new log4javascript.NullLayout());
|
|
346
|
+
t.logger.debug("TEST");
|
|
347
|
+
t.assertEquals(t.appender.logMessages[0], "TEST");
|
|
348
|
+
});
|
|
349
|
+
s.test("XmlLayout format test", function(t) {
|
|
350
|
+
var layout = new log4javascript.XmlLayout();
|
|
351
|
+
testLayoutWithVariables(layout, t);
|
|
352
|
+
});
|
|
353
|
+
|
|
354
|
+
s.test("XmlLayout test", function(t) {
|
|
355
|
+
t.appender.setLayout(new log4javascript.XmlLayout());
|
|
356
|
+
t.logger.debug("TEST");
|
|
357
|
+
t.assertRegexMatches(/^<log4javascript:event logger="test" timestamp="\d+" level="DEBUG">\s*<log4javascript:message><!\[CDATA\[TEST\]\]><\/log4javascript:message>\s*<\/log4javascript:event>\s*$/, t.appender.logMessages[0]);
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
s.test("XmlLayout with exception test", function(t) {
|
|
361
|
+
t.appender.setLayout(new log4javascript.XmlLayout());
|
|
362
|
+
t.logger.debug("TEST", new Error("Test error"));
|
|
363
|
+
t.assertRegexMatches(/^<log4javascript:event logger="test" timestamp="\d+" level="DEBUG">\s*<log4javascript:message><!\[CDATA\[TEST\]\]><\/log4javascript:message>\s*<log4javascript:exception>\s*<!\[CDATA\[.*\]\]><\/log4javascript:exception>\s*<\/log4javascript:event>\s*$/, t.appender.logMessages[0]);
|
|
364
|
+
});
|
|
365
|
+
|
|
366
|
+
var setUpXmlLayoutMillisecondsTest = function(t) {
|
|
367
|
+
t.date = new Date();
|
|
368
|
+
t.timeInMilliseconds = t.date.getTime();
|
|
369
|
+
t.timeInSeconds = Math.floor(t.timeInMilliseconds / 1000);
|
|
370
|
+
t.milliseconds = t.date.getMilliseconds();
|
|
371
|
+
|
|
372
|
+
t.loggingEvent = new log4javascript.LoggingEvent(t.logger, t.date, log4javascript.Level.DEBUG, ["TEST"], null);
|
|
373
|
+
t.layout = new log4javascript.XmlLayout();
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
s.test("XmlLayout seconds/milliseconds test 1", function(t) {
|
|
377
|
+
setUpXmlLayoutMillisecondsTest(t);
|
|
378
|
+
|
|
379
|
+
// Test default (i.e. timestamps in milliseconds) first
|
|
380
|
+
var regex = new RegExp('^<log4javascript:event logger="test" timestamp="' + t.timeInMilliseconds + '" level="DEBUG">\\s*<log4javascript:message><!\\[CDATA\\[TEST\\]\\]></log4javascript:message>\\s*</log4javascript:event>\\s*$');
|
|
381
|
+
t.assertRegexMatches(regex, t.layout.format(t.loggingEvent));
|
|
382
|
+
});
|
|
383
|
+
|
|
384
|
+
s.test("XmlLayout seconds/milliseconds test 2", function(t) {
|
|
385
|
+
setUpXmlLayoutMillisecondsTest(t);
|
|
386
|
+
|
|
387
|
+
// Change the global setting
|
|
388
|
+
log4javascript.setTimeStampsInMilliseconds(false);
|
|
389
|
+
var formatted = t.layout.format(t.loggingEvent);
|
|
390
|
+
log4javascript.setTimeStampsInMilliseconds(true);
|
|
391
|
+
var regex = new RegExp('^<log4javascript:event logger="test" timestamp="' + t.timeInSeconds + '" milliseconds="' + t.milliseconds + '" level="DEBUG">\\s*<log4javascript:message><!\\[CDATA\\[TEST\\]\\]></log4javascript:message>\\s*</log4javascript:event>\\s*$');
|
|
392
|
+
t.assertRegexMatches(regex, formatted);
|
|
393
|
+
});
|
|
394
|
+
|
|
395
|
+
s.test("XmlLayout seconds/milliseconds test 3", function(t) {
|
|
396
|
+
setUpXmlLayoutMillisecondsTest(t);
|
|
397
|
+
|
|
398
|
+
// Change the layout setting
|
|
399
|
+
t.layout.setTimeStampsInMilliseconds(false);
|
|
400
|
+
var formatted = t.layout.format(t.loggingEvent);
|
|
401
|
+
var regex = new RegExp('^<log4javascript:event logger="test" timestamp="' + t.timeInSeconds + '" milliseconds="' + t.milliseconds + '" level="DEBUG">\\s*<log4javascript:message><!\\[CDATA\\[TEST\\]\\]></log4javascript:message>\\s*</log4javascript:event>\\s*$');
|
|
402
|
+
t.assertRegexMatches(regex, formatted);
|
|
403
|
+
});
|
|
404
|
+
s.test("escapeNewLines test", function(t) {
|
|
405
|
+
var escapeNewLines = log4javascript.evalInScope("escapeNewLines");
|
|
406
|
+
var str = "1\r2\n3\n4\r\n5\r6\r\n7";
|
|
407
|
+
t.assertEquals(escapeNewLines(str), "1\\r\\n2\\r\\n3\\r\\n4\\r\\n5\\r\\n6\\r\\n7");
|
|
408
|
+
});
|
|
409
|
+
|
|
410
|
+
s.test("JsonLayout format test", function(t) {
|
|
411
|
+
var layout = new log4javascript.JsonLayout();
|
|
412
|
+
testLayoutWithVariables(layout, t);
|
|
413
|
+
});
|
|
414
|
+
|
|
415
|
+
s.test("JsonLayout test", function(t) {
|
|
416
|
+
t.appender.setLayout(new log4javascript.JsonLayout());
|
|
417
|
+
t.logger.debug("TEST");
|
|
418
|
+
t.assertRegexMatches(/^{"logger":"test","timestamp":\d+,"level":"DEBUG","url":".*","message":"TEST"}$/, t.appender.logMessages[0]);
|
|
419
|
+
});
|
|
420
|
+
|
|
421
|
+
s.test("JsonLayout JSON validity test", function(t) {
|
|
422
|
+
t.appender.setLayout(new log4javascript.JsonLayout());
|
|
423
|
+
t.logger.debug("TEST");
|
|
424
|
+
eval("var o = " + t.appender.logMessages[0]);
|
|
425
|
+
t.assertEquals(o.message, "TEST");
|
|
426
|
+
});
|
|
427
|
+
|
|
428
|
+
s.test("JsonLayout with number type message test", function(t) {
|
|
429
|
+
t.appender.setLayout(new log4javascript.JsonLayout());
|
|
430
|
+
t.logger.debug(15);
|
|
431
|
+
t.assertRegexMatches(/^{"logger":"test","timestamp":\d+,"level":"DEBUG","url":".*","message":15}$/, t.appender.logMessages[0]);
|
|
432
|
+
});
|
|
433
|
+
|
|
434
|
+
s.test("JsonLayout with object type message test", function(t) {
|
|
435
|
+
t.appender.setLayout(new log4javascript.JsonLayout());
|
|
436
|
+
t.logger.debug({});
|
|
437
|
+
t.assertRegexMatches(/^{"logger":"test","timestamp":\d+,"level":"DEBUG","url":".*","message":"\[object Object\]"}$/, t.appender.logMessages[0]);
|
|
438
|
+
});
|
|
439
|
+
|
|
440
|
+
s.test("JsonLayout with boolean type message test", function(t) {
|
|
441
|
+
t.appender.setLayout(new log4javascript.JsonLayout());
|
|
442
|
+
t.logger.debug(false);
|
|
443
|
+
t.assertRegexMatches(/^{"logger":"test","timestamp":\d+,"level":"DEBUG","url":".*","message":false}$/, t.appender.logMessages[0]);
|
|
444
|
+
});
|
|
445
|
+
|
|
446
|
+
s.test("JsonLayout with quote test", function(t) {
|
|
447
|
+
t.appender.setLayout(new log4javascript.JsonLayout());
|
|
448
|
+
t.logger.debug("TE\"S\"T");
|
|
449
|
+
t.assertRegexMatches(/^{"logger":"test","timestamp":\d+,"level":"DEBUG","url":".*","message":"TE\\"S\\"T"}$/, t.appender.logMessages[0]);
|
|
450
|
+
});
|
|
451
|
+
|
|
452
|
+
s.test("JsonLayout with exception test", function(t) {
|
|
453
|
+
t.appender.setLayout(new log4javascript.JsonLayout());
|
|
454
|
+
t.logger.debug("TEST", new Error("Test error"));
|
|
455
|
+
t.assertRegexMatches(/^{"logger":"test","timestamp":\d+,"level":"DEBUG","url":".*","message":"TEST","exception":.*}$/, t.appender.logMessages[0]);
|
|
456
|
+
});
|
|
457
|
+
|
|
458
|
+
var setUpJsonLayoutMillisecondsTest = function(t) {
|
|
459
|
+
t.date = new Date();
|
|
460
|
+
t.timeInMilliseconds = t.date.getTime();
|
|
461
|
+
t.timeInSeconds = Math.floor(t.timeInMilliseconds / 1000);
|
|
462
|
+
t.milliseconds = t.date.getMilliseconds();
|
|
463
|
+
|
|
464
|
+
t.loggingEvent = new log4javascript.LoggingEvent(t.logger, t.date, log4javascript.Level.DEBUG, ["TEST"], null);
|
|
465
|
+
t.layout = new log4javascript.JsonLayout();
|
|
466
|
+
};
|
|
467
|
+
|
|
468
|
+
s.test("JsonLayout seconds/milliseconds test 1", function(t) {
|
|
469
|
+
setUpJsonLayoutMillisecondsTest(t);
|
|
470
|
+
|
|
471
|
+
// Test default (i.e. timestamps in milliseconds) first
|
|
472
|
+
var regex = new RegExp('^{"logger":"test","timestamp":' + t.timeInMilliseconds + ',"level":"DEBUG","url":".*","message":"TEST"}$');
|
|
473
|
+
t.assertRegexMatches(regex, t.layout.format(t.loggingEvent));
|
|
474
|
+
});
|
|
475
|
+
|
|
476
|
+
s.test("JsonLayout seconds/milliseconds test 2", function(t) {
|
|
477
|
+
setUpJsonLayoutMillisecondsTest(t);
|
|
478
|
+
|
|
479
|
+
// Change the global setting
|
|
480
|
+
log4javascript.setTimeStampsInMilliseconds(false);
|
|
481
|
+
var formatted = t.layout.format(t.loggingEvent);
|
|
482
|
+
log4javascript.setTimeStampsInMilliseconds(true);
|
|
483
|
+
var regex = new RegExp('^{"logger":"test","timestamp":' + t.timeInSeconds + ',"level":"DEBUG","url":".*","message":"TEST","milliseconds":' + t.milliseconds + '}$');
|
|
484
|
+
t.assertRegexMatches(regex, formatted);
|
|
485
|
+
});
|
|
486
|
+
|
|
487
|
+
s.test("JsonLayout seconds/milliseconds test 3", function(t) {
|
|
488
|
+
setUpJsonLayoutMillisecondsTest(t);
|
|
489
|
+
|
|
490
|
+
// Change the layout setting
|
|
491
|
+
t.layout.setTimeStampsInMilliseconds(false);
|
|
492
|
+
var formatted = t.layout.format(t.loggingEvent);
|
|
493
|
+
var regex = new RegExp('^{"logger":"test","timestamp":' + t.timeInSeconds + ',"level":"DEBUG","url":".*","message":"TEST","milliseconds":' + t.milliseconds + '}$');
|
|
494
|
+
t.assertRegexMatches(regex, formatted);
|
|
495
|
+
});
|
|
496
|
+
s.test("HttpPostDataLayout format test", function(t) {
|
|
497
|
+
var layout = new log4javascript.HttpPostDataLayout();
|
|
498
|
+
testLayoutWithVariables(layout, t);
|
|
499
|
+
});
|
|
500
|
+
|
|
501
|
+
s.test("HttpPostDataLayout test", function(t) {
|
|
502
|
+
t.appender.setLayout(new log4javascript.HttpPostDataLayout());
|
|
503
|
+
t.logger.debug("TEST");
|
|
504
|
+
t.assertRegexMatches(/^logger=test×tamp=\d+&level=DEBUG&url=.*&message=TEST$/, t.appender.logMessages[0]);
|
|
505
|
+
});
|
|
506
|
+
|
|
507
|
+
s.test("HttpPostDataLayout URL encoding test", function(t) {
|
|
508
|
+
t.appender.setLayout(new log4javascript.HttpPostDataLayout());
|
|
509
|
+
t.logger.debug("TEST +\"1\"");
|
|
510
|
+
t.assertRegexMatches(/^logger=test×tamp=\d+&level=DEBUG&url=.*&message=TEST%20%2B%221%22$/, t.appender.logMessages[0]);
|
|
511
|
+
});
|
|
512
|
+
|
|
513
|
+
s.test("HttpPostDataLayout with exception test", function(t) {
|
|
514
|
+
t.appender.setLayout(new log4javascript.HttpPostDataLayout());
|
|
515
|
+
t.logger.debug("TEST", new Error("Test error"));
|
|
516
|
+
t.assertRegexMatches(/^logger=test×tamp=\d+&level=DEBUG&url=.*&message=TEST&exception=.*$/, t.appender.logMessages[0]);
|
|
517
|
+
});
|
|
518
|
+
|
|
519
|
+
(function() {
|
|
520
|
+
var formatObjectExpansion = log4javascript.evalInScope("formatObjectExpansion");
|
|
521
|
+
var newLine = log4javascript.evalInScope("newLine");
|
|
522
|
+
var arr = [
|
|
523
|
+
null,
|
|
524
|
+
undefined,
|
|
525
|
+
1.2,
|
|
526
|
+
"A string",
|
|
527
|
+
[1, "test"],
|
|
528
|
+
{
|
|
529
|
+
a: {
|
|
530
|
+
b: 1
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
];
|
|
534
|
+
|
|
535
|
+
s.test("Basic formatObjectExpansion array test (depth: 1)", function(t) {
|
|
536
|
+
t.assertEquals(formatObjectExpansion(arr, 1),
|
|
537
|
+
"[" + newLine +
|
|
538
|
+
" null," + newLine +
|
|
539
|
+
" undefined," + newLine +
|
|
540
|
+
" 1.2," + newLine +
|
|
541
|
+
" A string," + newLine +
|
|
542
|
+
" 1,test," + newLine +
|
|
543
|
+
" [object Object]" + newLine +
|
|
544
|
+
"]"
|
|
545
|
+
);
|
|
546
|
+
});
|
|
547
|
+
|
|
548
|
+
s.test("Basic formatObjectExpansion array test (depth: 2)", function(t) {
|
|
549
|
+
t.assertEquals(formatObjectExpansion(arr, 2),
|
|
550
|
+
"[" + newLine +
|
|
551
|
+
" null," + newLine +
|
|
552
|
+
" undefined," + newLine +
|
|
553
|
+
" 1.2," + newLine +
|
|
554
|
+
" A string," + newLine +
|
|
555
|
+
" [" + newLine +
|
|
556
|
+
" 1," + newLine +
|
|
557
|
+
" test" + newLine +
|
|
558
|
+
" ]," + newLine +
|
|
559
|
+
" {" + newLine +
|
|
560
|
+
" a: [object Object]" + newLine +
|
|
561
|
+
" }" + newLine +
|
|
562
|
+
"]"
|
|
563
|
+
);
|
|
564
|
+
});
|
|
565
|
+
|
|
566
|
+
s.test("formatObjectExpansion simple object test", function(t) {
|
|
567
|
+
var obj = {
|
|
568
|
+
STRING: "A string"
|
|
569
|
+
};
|
|
570
|
+
t.assertEquals(formatObjectExpansion(obj, 1),
|
|
571
|
+
"{" + newLine +
|
|
572
|
+
" STRING: A string" + newLine +
|
|
573
|
+
"}"
|
|
574
|
+
);
|
|
575
|
+
});
|
|
576
|
+
|
|
577
|
+
s.test("formatObjectExpansion simple circular object test", function(t) {
|
|
578
|
+
var obj = {};
|
|
579
|
+
obj.a = obj;
|
|
580
|
+
|
|
581
|
+
t.assertEquals(formatObjectExpansion(obj, 2),
|
|
582
|
+
"{" + newLine +
|
|
583
|
+
" a: [object Object] [already expanded]" + newLine +
|
|
584
|
+
"}"
|
|
585
|
+
);
|
|
586
|
+
});
|
|
587
|
+
})(); /* ---------------------------------------------------------- */
|
|
588
|
+
|
|
589
|
+
var getSampleDate = function() {
|
|
590
|
+
var date = new Date();
|
|
591
|
+
date.setFullYear(2006);
|
|
592
|
+
date.setMonth(7);
|
|
593
|
+
date.setDate(30);
|
|
594
|
+
date.setHours(15);
|
|
595
|
+
date.setMinutes(38);
|
|
596
|
+
date.setSeconds(45);
|
|
597
|
+
return date;
|
|
598
|
+
};
|
|
599
|
+
|
|
600
|
+
/* ---------------------------------------------------------- */
|
|
601
|
+
|
|
602
|
+
s.test("String.replace test", function(t) {
|
|
603
|
+
t.assertEquals("Hello world".replace(/o/g, "Z"), "HellZ wZrld");
|
|
604
|
+
});
|
|
605
|
+
|
|
606
|
+
s.test("PatternLayout format test", function(t) {
|
|
607
|
+
var layout = new log4javascript.PatternLayout();
|
|
608
|
+
testLayoutWithVariables(layout, t);
|
|
609
|
+
});
|
|
610
|
+
|
|
611
|
+
s.test("PatternLayout dates test", function(t) {
|
|
612
|
+
var layout = new log4javascript.PatternLayout("%d %d{DATE} %d{HH:ss}");
|
|
613
|
+
t.appender.setLayout(layout);
|
|
614
|
+
t.logger.debug("TEST");
|
|
615
|
+
t.assertRegexMatches(/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3} \d{2} [A-Z][a-z]{2} \d{4} \d{2}:\d{2}:\d{2},\d{3} \d{2}:\d{2}$/, t.appender.logMessages[0]);
|
|
616
|
+
});
|
|
617
|
+
|
|
618
|
+
s.test("PatternLayout modifiers test", function(t) {
|
|
619
|
+
var layout = new log4javascript.PatternLayout("%m|%3m|%-3m|%6m|%-6m|%.2m|%1.2m|%6.8m|%-1.2m|%-6.8m|");
|
|
620
|
+
t.appender.setLayout(layout);
|
|
621
|
+
t.logger.debug("TEST");
|
|
622
|
+
t.assertEquals(t.appender.logMessages[0], "TEST|TEST|TEST| TEST|TEST |ST|ST| TEST|ST|TEST |");
|
|
623
|
+
});
|
|
624
|
+
|
|
625
|
+
s.test("PatternLayout conversion characters test", function(t) {
|
|
626
|
+
var layout = new log4javascript.PatternLayout("%c %n %p %r literal %%");
|
|
627
|
+
t.appender.setLayout(layout);
|
|
628
|
+
t.logger.debug("TEST");
|
|
629
|
+
t.assertRegexMatches(/^test \s+ DEBUG \d+ literal %$/, t.appender.logMessages[0]);
|
|
630
|
+
});
|
|
631
|
+
|
|
632
|
+
s.test("PatternLayout message test", function(t) {
|
|
633
|
+
var layout = new log4javascript.PatternLayout("%m{1} %m{2}");
|
|
634
|
+
t.appender.setLayout(layout);
|
|
635
|
+
var testObj = {
|
|
636
|
+
strikers: {
|
|
637
|
+
quick: "Marlon"
|
|
638
|
+
}
|
|
639
|
+
};
|
|
640
|
+
t.logger.debug(testObj);
|
|
641
|
+
t.assertEquals("{\r\n strikers: [object Object]\r\n} {\r\n\ strikers: {\r\n quick: Marlon\r\n }\r\n}", t.appender.logMessages[0]);
|
|
642
|
+
});
|
|
643
|
+
/*
|
|
644
|
+
s.test("AjaxAppender JsonLayout single message test", function(t) {
|
|
645
|
+
t.async(10000);
|
|
646
|
+
// Create and add an Ajax appender
|
|
647
|
+
var ajaxAppender = new log4javascript.AjaxAppender("../log4javascript.do");
|
|
648
|
+
ajaxAppender.setLayout(new log4javascript.JsonLayout());
|
|
649
|
+
ajaxAppender.setRequestSuccessCallback(
|
|
650
|
+
function(xmlHttp) {
|
|
651
|
+
// Response comes back as JSON array of messages logged
|
|
652
|
+
var jsonResponse = xmlHttp.responseText;
|
|
653
|
+
var arr = eval(jsonResponse);
|
|
654
|
+
t.assertEquals(arr.length, 1);
|
|
655
|
+
t.assertEquals(arr[0], "TEST");
|
|
656
|
+
t.succeed();
|
|
657
|
+
}
|
|
658
|
+
);
|
|
659
|
+
ajaxAppender.setFailCallback(
|
|
660
|
+
function(msg) {
|
|
661
|
+
t.fail(msg);
|
|
662
|
+
ajaxErrorMessage = msg;
|
|
663
|
+
}
|
|
664
|
+
);
|
|
665
|
+
t.logger.addAppender(ajaxAppender);
|
|
666
|
+
t.logger.debug("TEST");
|
|
667
|
+
});
|
|
668
|
+
|
|
669
|
+
s.test("AjaxAppender JsonLayout batched messages test", function(t) {
|
|
670
|
+
t.async(10000);
|
|
671
|
+
var message1 = "TEST 1";
|
|
672
|
+
var message2 = "String with \"lots of 'quotes'\" + plusses in";
|
|
673
|
+
var message3 = "A non-threatening string";
|
|
674
|
+
// Create and add an Ajax appender
|
|
675
|
+
var ajaxAppender = new log4javascript.AjaxAppender("../log4javascript.do");
|
|
676
|
+
ajaxAppender.setLayout(new log4javascript.JsonLayout());
|
|
677
|
+
ajaxAppender.setBatchSize(3);
|
|
678
|
+
ajaxAppender.setRequestSuccessCallback(
|
|
679
|
+
function(xmlHttp) {
|
|
680
|
+
// Response comes back as JSON array of messages logged
|
|
681
|
+
var jsonResponse = xmlHttp.responseText;
|
|
682
|
+
var arr = eval(jsonResponse);
|
|
683
|
+
t.assertEquals(arr.length, 3);
|
|
684
|
+
t.assertEquals(arr[0], message1);
|
|
685
|
+
t.assertEquals(arr[1], message2);
|
|
686
|
+
t.assertEquals(arr[2], message3);
|
|
687
|
+
t.succeed();
|
|
688
|
+
}
|
|
689
|
+
);
|
|
690
|
+
ajaxAppender.setFailCallback(
|
|
691
|
+
function(msg) {
|
|
692
|
+
t.fail(msg);
|
|
693
|
+
ajaxErrorMessage = msg;
|
|
694
|
+
}
|
|
695
|
+
);
|
|
696
|
+
t.logger.addAppender(ajaxAppender);
|
|
697
|
+
t.logger.debug(message1);
|
|
698
|
+
t.logger.info(message2);
|
|
699
|
+
t.logger.warn(message3);
|
|
700
|
+
});
|
|
701
|
+
|
|
702
|
+
s.test("AjaxAppender HttpPostDataLayout single message test", function(t) {
|
|
703
|
+
t.async(10000);
|
|
704
|
+
// Create and add an Ajax appender
|
|
705
|
+
var ajaxAppender = new log4javascript.AjaxAppender("../log4javascript.do");
|
|
706
|
+
var testMessage = "TEST +\"1\"";
|
|
707
|
+
ajaxAppender.setLayout(new log4javascript.HttpPostDataLayout());
|
|
708
|
+
ajaxAppender.setRequestSuccessCallback(
|
|
709
|
+
function(xmlHttp) {
|
|
710
|
+
// Response comes back as JSON array of messages logged
|
|
711
|
+
var jsonResponse = xmlHttp.responseText;
|
|
712
|
+
var arr = eval(jsonResponse);
|
|
713
|
+
t.assertEquals(arr.length, 1);
|
|
714
|
+
t.assertEquals(arr[0], testMessage);
|
|
715
|
+
t.succeed();
|
|
716
|
+
}
|
|
717
|
+
);
|
|
718
|
+
ajaxAppender.setFailCallback(
|
|
719
|
+
function(msg) {
|
|
720
|
+
t.fail(msg);
|
|
721
|
+
ajaxErrorMessage = msg;
|
|
722
|
+
}
|
|
723
|
+
);
|
|
724
|
+
t.logger.addAppender(ajaxAppender);
|
|
725
|
+
t.logger.debug(testMessage);
|
|
726
|
+
});
|
|
727
|
+
*/
|
|
728
|
+
});
|