首页 > 网站 > WEB开发 > 正文

自定义console.log

2024-04-27 14:17:31
字体:
来源:转载
供稿:网友

自定义console.log

转载请注明:http://www.cnblogs.com/yufu/p/4054471.html

  1 /**  2 *name:      自定义仿console.log  3 *function:  深度输出对象数据  4 *author:    梁快升  5 *department:无线公共支持touch FE  6 **/  7 /*  8 var str = myConsole.log(data,false);  9 nodejs控制台输出:第一个参数为数据,第二个参数为是否格式化(可为空,默认为true) 10  11 var str = myConsole.logFileAdd('e:/log2.txt',data,false); 12 nodejs添加输出到文件 13 var str = myConsole.logFileNew('e:/log2.txt',data,false); 14 nodejs覆盖输出到文件 15 第一个参数为文件路径,第二个参数为数据,第三个参数为是否格式化(可为空,默认为true) 16  17 var str = myConsole.logHtml(data,true,false); 18 浏览器 输出到Html:第一个参数为数据,第二个参数为是否格式化(可为空,默认为true),第三个参数为是否添加节点到html(可为空,默认为true) 19 注意:若要设置第三个参数,则第二个参数必须显式设置 20 */ 21  22 /*注意:若在非node.js环境中使用,需要注释掉下面两句,否则会报错*/ 23 var fs = require('fs');         //node.js文件输出 24 var sys = require('sys');       //node.js控制台输出 25  26 var myConsole = function() {}; 27 myConsole.PRototype = { 28     log : Log,                  //nodejs控制台输出 29     logFileAdd : LogFileAdd,    //nodejs添加输出到文件 30     logFileNew : LogFileNew,    //nodejs覆盖输出到文件 31     logHtml : LogHtml           //浏览器 输出到Html 32 } 33  34 /***************配置项****************************/ 35 var nextLine = '/r/n';//换行符号 36 var tabChar = '    ';//缩进符号 37 var _out_str = "";//缓存字符串 38 /*************************************************/ 39  40 /*****************全部组装完成后一起输出*********************************************/ 41 /*输出或者拼接*/ 42 var output = function (obj){ 43     _out_str += obj; 44 }; 45 /*拼接要输出的字符串*/ 46 function getOutStr(obj,isFormate){//isFormate是否缩进 47     _out_str = ''; 48     mylog(obj,1,isFormate); 49     printLn(true); 50 } 51 /*添加输出到文件*/ 52 function LogFileAdd(file,obj,isFormate){ 53     getOutStr(obj,isFormate); 54     saveFile(file,'a',_out_str); 55     return _out_str; 56 } 57 /*覆盖输出到文件*/ 58 function LogFileNew(file,obj,isFormate){ 59     getOutStr(obj,isFormate); 60     saveFile(file,'n',_out_str); 61     return _out_str; 62 } 63 /*控制台输出*/ 64 function Log(obj,isFormate){ 65     getOutStr(obj,isFormate); 66     sys.print(_out_str); 67     return _out_str; 68 } 69 /*html输出*/ 70 function LogHtml(obj,isFormate,isAddPre){//isAddPre是否添加到html,默认添加 71     getOutStr(obj,isFormate); 72     if(isAddPre == null)isAddPre = true; 73     if(isAddPre){ 74         var pre=document.createElement("pre"); 75         pre.className = "log-disp-pre"; 76         var node=document.createTextNode(_out_str); 77         pre.appendChild(node); 78         document.body.appendChild(pre); 79         // $('body').append('<pre class="log-disp-pre">'+ _out_str + '</pre>'); 80     } 81     return _out_str; 82 } 83 /***写入文件**************** 84 *type = 'a'为添加,'n'为覆盖 85 ***************************/ 86 var saveFile = function (file,type,content){ 87     switch(type){ 88         case 'a':{ 89             fs.appendFile(file, content, function (err) { 90                 if (err) throw err; 91                 console.log(file + ':It/'s saved append!'); //文件被保存 92             }); 93             break; 94         } 95         case 'n':{ 96             fs.writeFile(file, content, function (err) { 97                 if (err) throw err; 98                 console.log(file + ':It/'s saved new!'); //文件被保存 99             });100             break;101         }102     }103 };104 /***************************************************************************************/105 106 /******************不进行组装,一个个输出*************************/107 // var output = function (obj){108 //     sys.print(obj);109 //     // console.log(obj);110 //     // process.stdout.write(obj);111 // };112 // function Log(obj,isFormate){113 //     mylog(obj,1,isFormate);114 //     printLn(true);115 // }116 /*******************************************/117 /*处理数据*/118 function mylog(obj,deep,isFormate){119     if(!deep)deep=1;120     switch(dataType(obj)){121         case 1:{122             output('"');123             output(obj);124             output('"');125             break;126         }127         // case 2:{128         //     break;129         // }130         case 3:{131             output('"');132             output(obj.toString());133             output('"');134             break;135         }136         case 4:{137             output(obj);138             // if(obj){output(true);}else{output(false);}139             break;140         }141         // case 5:{142         //     break;143         // }144         case 6:{145             output('{');146             printLn(isFormate);147             var num1 = 0,num2 = 0;148             for(var key in obj){num1++;}149             for(var key in obj){150                 printSpace(deep,isFormate);151                 output(key);152                 output(':');153                 printStr(' ',isFormate);154                 mylog(obj[key],deep+1,isFormate);155                 num2++;156                 if(num2 < num1)output(',');157                 printLn(isFormate);158             }159             printSpace(deep-1,isFormate);160             output('}');161             break;162         }163         case 7:{164             output('[');165             for(var j=0;j<obj.length-1;j++){166                 printLn(isFormate);167                 printSpace(deep,isFormate);168                 mylog(obj[j],deep+1,isFormate);169                 output(',');170             }171             if(obj.length > 0){172                 printLn(isFormate);173                 printSpace(deep,isFormate);174                 mylog(obj[obj.length-1],deep+1,isFormate);175                 printLn(isFormate);176             }177             printSpace(deep-1,isFormate);178             output(']');179             break;180         }181         default:{182             output(obj);183             break;184         }185     }186 };187 var printStr = function (str,isFormate){188     if(isFormate == null)isFormate = true;189     if(isFormate){190         output(str);191     }192 };193 var printSpace = function (deep,isFormate){194     for(var i=0;i<deep;i++){195         printStr(tabChar,isFormate);196     }197 };198 var printLn = function (isFormate){199     printStr(nextLine,isFormate);200 };201 var dataType = function (obj){202     var className = toString.call(obj);203     switch (className) {204       case '[object String]':205         return 1;206       case '[object Number]':207         return 2;208       case '[object Date]':209         return 3;210       case '[object Boolean]':211         return 4;212       case '[object RegExp]':213         return 5;214       case '[object Object]':215         return 6;216       case '[object Array]':217         return 7;218     }219     return 0;220 };221 module.exports = new myConsole();

转载请注明:http://www.cnblogs.com/yufu/p/4054471.html


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表