javascript logger blackbird jquery 改造

var logger=BizPlant.namespace("logger");
logger.config={
    pattern:"%d{yyyy-MM-dd HH:mm:ss,SSS} %p [%t] %c{1}.%M()| line:%L | %m%n",
    level:"info"
};
$(document).ready(function(){
    var enabled=true;
    var level={
        debug: true,
        info: true,
        warn: true,
        error: true,
        profile: true
    };
    var COOKIE_KEY="BizPlantLogger";
    var classes = {};
    var profiler = {};
    var spans = [];
    var cache = [];
    var IDs = {
        blackbird: 'blackbird',
        checkbox: 'bbVis',
        filters: 'bbFilters',
        controls: 'bbControls',
        size: 'bbSize'
    }
    var state=(function(){
        var bizPlantLoggerValue=$.cookie(COOKIE_KEY);
        if(bizPlantLoggerValue!=null && bizPlantLoggerValue!=""){
            return JSON.parse(bizPlantLoggerValue);
        }else{
            return {
                pos:1,
                size:0,
                load:true
            };
        }
    })();
   
    var recordState=function(){
        $.cookie(COOKIE_KEY,JSON.stringify(state));
        var newClass = [];
        for (var word in classes ) {
            newClass.push( classes[ word ] );
        }
        $("#"+IDs.blackbird).removeClass().addClass(newClass.join( ' ' ));
    };
    var  reposition=function( position ) {
        if ( position === undefined || position == null ) {
            position = ( state && state.pos === null ) ? 1 : ( state.pos + 1 ) % 4; //set to initial position ('topRight') or move to next position
        }
       
        switch ( position ) {
            case 0:
                classes[ 0 ] = 'bbTopLeft';
                break;
            case 1:
                classes[ 0 ] = 'bbTopRight';
                break;
            case 2:
                classes[ 0 ] = 'bbBottomLeft';
                break;
            case 3:
                classes[ 0 ] = 'bbBottomRight';
                break;
        }
        state.pos = position;
        recordState();
    }
    var  resize=function( size ) {
        if ( size === undefined || size === null ) {
            size = ( state && state.size == null ) ? 0 : ( state.size + 1 ) % 2;
        }
        classes[ 1 ] = ( size === 0 ) ? 'bbSmall' : 'bbLarge'
        var title=( size === 1 ) ? 'small' : 'large';
        $( "#"+IDs.size).attr("title",title).removeClass().addClass(title);
        state.size = size;
        recordState();
    };
   
    for ( type in level ) {
        spans.push( [ '<span class="', type, '" type="', type, '"></span>'].join( '' ) );
    }
    var inner = [
    '<div class="header">',
    '<div class="left">',
    '<div id="', IDs.filters, '" class="filters" title="click to filter by message type">', spans.join( '' ), '</div>',
    '</div>',
    '<div class="right">',
    '<div id="', IDs.controls, '" class="controls">',
    '<span id="', IDs.size ,'" title="contract" op="resize"></span>',
    '<span class="clear" title="clear" op="clear"></span>',
    '<span class="close" title="close" op="close"></span>',
    '</div>',
    '</div>',
    '</div>',
    '<div class="main">',
    '<div class="left"></div><div class="mainBody">',
    '<ol>', cache.join( '' ), '</ol>',
    '</div><div class="right"></div>',
    '</div>',
    '<div class="footer">',
    '<div class="left"><label for="', IDs.checkbox, '"><input type="checkbox" id="', IDs.checkbox, '" />Visible on page load</label></div>',
    '<div class="right"></div>',
    '</div>'
    ].join( '' );

    $("body").append("<div id='"+IDs.blackbird+"'class='bbSmall bbTopRight' >"+inner+"</div>");
    if(state.load){
        $("#"+IDs.checkbox).attr("checked","checked");
    }else{
        $("#"+IDs.blackbird).hide();
    }
    resize( state.size );
    reposition( state.pos );

    $("#"+IDs.checkbox).bind("click",function(evt){
        var el = ( evt.target ) ? evt.target : evt.srcElement;
        state.load = $(this).is(":checked");
        recordState();
    });
    $("#"+IDs.filters).bind("click",function(evt){
        var span = ( evt.target ) ? evt.target : evt.srcElement;
        if ( $(span).is('span')) {
            var type = $(span).attr("type");
            //console.log(type+"控制按钮被点击!");
            if ( evt.altKey ) {
                //console.log("ALT键 被按住");
                var active = 0;
                for ( var entry in level ) {
                    if ( level[ entry ] ) active++;
                }
                var oneActiveFilter = ( active == 1 && level[ type ] );
                $("#"+IDs.filters).find("span").each(function(){
                    var spanType = $(this).attr("type");
                    if( oneActiveFilter || ( spanType == type )){
                        $(this).removeClass(spanType + 'Disabled ');
                        $(this).addClass(spanType);
                    }else{
                        $(this).removeClass(spanType);
                        $(this).addClass(spanType + 'Disabled ');
                    }
                    level[ spanType ] = oneActiveFilter || ( spanType == type );
                });
            }else {
                //window.console.log("普通点击");  
                if(!level[ type ]){
                    $(span).removeClass(type + 'Disabled ');
                    $(span).addClass(type);
                }else{
                    $(span).removeClass(type);
                    $(span).addClass(type + 'Disabled ');
                }
                level[ type ] = ! level[ type ];
            }

            //build outputList's class from messageTypes object
            var disabledTypes = [];
            for ( type in level ) {
                if ( ! level[ type ] ) disabledTypes.push( type );
            }
           
            disabledTypes.push( '' );
            $("#"+IDs.blackbird).find("ol:eq(0)").removeClass().addClass(disabledTypes.join( 'Hidden ' ));
        }
    });
    $("#"+IDs.controls).bind("click",function(evt){
        var el = ( evt.target ) ? evt.target : evt.srcElement;
        if ( $(el).is("span")) {
            switch ( $(el).attr("op") ) {
                case 'resize':
                    resize();
                    break;
                case 'clear':
                    $("#"+IDs.blackbird).find("ol:eq(0)").html("");
                    break;
                case 'close':
                    $("#"+IDs.blackbird).hide();
                    break;
            }
        }
    });
    var addMessage=function(type,msg,func){
        var message = ( msg.constructor == Array ) ? msg.join( '' ) : msg;
       
        if(!enabled){
            return ;
        }
        if(logger.config.level=="error" && type!="error"){
            return;
        }
        if(logger.config.level=="warn" && !(type=="error" || type=="warn")){
            return;
        }
        if(logger.config.level=="debug" && !(type=="error" || type=="warn" || type=="debug")){
            return;
        }
        $("#"+IDs.blackbird).find("ol:eq(0)").append("<li class='"+type+"'><span class='icon'></span>"+message+"</li>");
    };
    logger.info=function(msg,func){
        addMessage("info",msg,func);
    };
    logger.debug=function(msg,func){
        addMessage("debug",msg,func);
    };
    logger.warn=function(msg,func){
        addMessage("warn",msg,func);
    };
    logger.error=function(msg,func){
        addMessage("error",msg,func);
    };
    logger.profile=function(label){
        var currentTime = new Date(); //record the current time when profile() is executed
        if ( label == undefined || label == '' ) {
            addMessage( 'error', '<b>ERROR:</b> Please specify a label for your profile statement' );
        }
        else if ( profiler[ label ] ) {
            addMessage( 'profile', [ label, ': ', currentTime - profiler[ label ],    'ms' ].join( '' ) );
            delete profiler[ label ];
        }
        else {
            profiler[ label ] = currentTime;
            addMessage( 'profile', label );
        }
        return currentTime;
    };
    logger.move=function(){
        reposition();
    };
    logger.toggle=function(){
        if($("#"+IDs.blackbird).is(":hidden")){
            $("#"+IDs.blackbird).show();
        }else{
            $("#"+IDs.blackbird).hide();
        }
    };
    logger.config.setEnabled=function(enable){
        enabled=enable;
        if($("#"+IDs.blackbird).is(":hidden") && enable==true){
            $("#"+IDs.blackbird).show();
        }
        if(!$("#"+IDs.blackbird).is(":hidden") && enable==false){
            $("#"+IDs.blackbird).hide();
        }
    };
    logger.config.getEnabled=function(){
        return enabled;
    };
    $(document).bind('keydown.Shift_f1',function (evt){
        logger.toggle();
        return false;
    });
    $(document).bind('keydown.Shift_f2',function (evt){
        logger.move();
        return false;
    });
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值