2016年12月10日一周工作总结

一、根据手机号查询归属地接口

url:https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?cb=Test
&resource_name=guishudi
&query=18052178970
&_=1480906732952

相应结果为:

/**/Test({"status":"0","t":"","set_cache_time":"","data":[{"StdStg":6004, "StdStl":8, "_update_time":"1480829021", "loc":"https:\/\/ss1.baidu.com\/8aQDcnSm2Q5IlBGlnYG\/q?r=2002696&k=1805217", "key":"1805217", "url":"http:\/\/haoma.baidu.com", "title":"XXX", "showurl":"http:\/\/haoma.baidu.com", "prov":"江苏", "city":"徐州", "type":"中国电信", "SiteId":2002696, "_version":20177, "_select_time":1480829008, "querytype":"手机号码", "phoneinfo":"手机号码"18052178970"", "phoneno":"18052178970", "origphoneno":"18052178970", "titlecont":"手机号码归属地查询", "showlamp":"1", "clickneed":"0", "ExtendedLocation":"", "OriginQuery":"18052178970", "tplt":"mobilephone", "resourceid":"6004", "fetchkey":"6004_1805217", "appinfo":"", "role_id":1, "disp_type":0}]});
参数说明:

1)cb -- 返回结果名

2)query -- 待查询的手机号

3)data -- 返回手机号相关的信息

二、MySQL异常

事物没有提交,导致锁等待,异常信息为:Lock wait timeout exceeded; try restarting transaction

解决办法:

执行

select * from information_schema.innodb_trx 
之后找到了一个一直没有提交的只读事务, 找到对应的线程后,执行 kill thread_id,再确认一直没有提交的只读事物被干掉了就OK了。

三、log4j日志按级别输出到不同的文件

把warn和error日志分别存在不同的文件中,便于管理和查看,按照常规配置的话,warn日志中也包含error信息,配置中关键的配置说明是这一句:
log4j.appender.warn.Threshold = WARN 
而它的作用是输出WARN级别以上的内容到warn.log中,所以warn.log文件中包含了ERROR级别的文件。

解决办法是:定义自己的Appender类,继承DailyRollingFileAppender,改写针对Threshold 的设置说明(重写针对级别的比较方法)。

源代码

public boolean isAsSevereAsThreshold(Priority priority)  {    
     return threshold == null || priority.isGreaterOrEqual(threshold);    
} 
重写 isAsSevereAsThreshold(Priority priority)方法

public class MyAppender extends DailyRollingFileAppender {  
      
    @Override  
    public boolean isAsSevereAsThreshold(Priority priority) {    
          //只判断是否相等,而不判断优先级     
        return this.getThreshold().equals(priority);    
    }    
}  
只有当Threshold与priority一致时,才进行输出,就实现了真正Log4j按照级别输出日志文件。

配置文件如下:

### set log levels ###    
log4j.rootLogger=info,error,info  
log4j.appender.stdout=org.apache.log4j.ConsoleAppender     
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout     
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n     
      
log4j.logger.info=info  
log4j.appender.info=com.zznode.log.MyAppender    
log4j.appender.info.layout=org.apache.log4j.PatternLayout     
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n  
log4j.appender.info.datePattern='.'yyyy-MM-dd     
log4j.appender.info.Threshold = INFO   
log4j.appender.info.append=false   
log4j.appender.info.File=D:/log4j/info.log   
  
  
log4j.logger.error=error  
log4j.appender.error=com.zznode.log.MyAppender     
log4j.appender.error.layout=org.apache.log4j.PatternLayout     
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n   
log4j.appender.error.datePattern='.'yyyy-MM-dd     
log4j.appender.error.Threshold = ERROR     
log4j.appender.error.append=false   
log4j.appender.error.File=D:/log4j/error.log 

如果是xml配置,可通过filter设置:

<filter class="org.apache.log4j.varia.LevelRangeFilter">  
<param name="LevelMin" value="ERROR"/>  
<param name="LevelMax" value="ERROR"/>  
</filter> 

参考博文:http://blog.csdn.net/wangchsh2008/article/details/8812857

posted on 2016-12-10 10:44  菜鸟Z  阅读(153)  评论(0编辑  收藏  举报

导航