日志:

94.237.142.21 - - [18/Sep/2013:06:49:18 +0000] "GET /wp-content/uploads/2013/07/rstudio-git3.png HTTP/1.1" 304 0 "-" "Mozilla/4.0 (compatible;)"
183.49.46.228 - - [18/Sep/2013:06:49:23 +0000] "-" 400 0 "-" "-"
163.177.71.12 - - [18/Sep/2013:06:49:33 +0000] "HEAD / HTTP/1.1" 200 20 "-" "DNSPod-Monitor/1.0"
163.177.71.12 - - [18/Sep/2013:06:49:36 +0000] "HEAD / HTTP/1.1" 200 20 "-" "DNSPod-Monitor/1.0"
101.226.68.137 - - [18/Sep/2013:06:49:42 +0000] "HEAD / HTTP/1.1" 200 20 "-" "DNSPod-Monitor/1.0"
101.226.68.137 - - [18/Sep/2013:06:49:45 +0000] "HEAD / HTTP/1.1" 200 20 "-" "DNSPod-Monitor/1.0"
60.208.6.156 - - [18/Sep/2013:06:49:48 +0000] "GET /wp-content/uploads/2013/07/rcassandra.png HTTP/1.0" 200 185524 "http://cos.name/category/software/packages/" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36"
222.68.172.190 - - [18/Sep/2013:06:49:57 +0000] "GET /images/my.jpg HTTP/1.1" 200 19939 "http://www.angularjs.cn/A00n" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36"
222.68.172.190 - - [18/Sep/2013:06:50:08 +0000] "-" 400 0 "-" "-"
183.195.232.138 - - [18/Sep/2013:06:50:16 +0000] "HEAD / HTTP/1.1" 200 20 "-" "DNSPod-Monitor/1.0"
183.195.232.138 - - [18/Sep/2013:06:50:16 +0000] "HEAD / HTTP/1.1" 200 20 "-" "DNSPod-Monitor/1.0"
66.249.66.84 - - [18/Sep/2013:06:50:28 +0000] "GET /page/6/ HTTP/1.1" 200 27777 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
221.130.41.168 - - [18/Sep/2013:06:50:37 +0000] "GET /feed/ HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36"
157.55.35.40 - - [18/Sep/2013:06:51:13 +0000] "GET /robots.txt HTTP/1.1" 200 150 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
50.116.27.194 - - [18/Sep/2013:06:51:35 +0000] "POST /wp-cron.php?doing_wp_cron=1379487095.2510800361633300781250 HTTP/1.0" 200 0 "-" "WordPress/3.6; http://blog.fens.me"
58.215.204.118 - - [18/Sep/2013:06:51:35 +0000] "GET /nodejs-socketio-chat/ HTTP/1.1" 200 10818 "http://www.google.com/url?sa=t&rct=j&q=nodejs%20%E5%BC%82%E6%AD%A5%E5%B9%BF%E6%92%AD&source=web&cd=1&cad=rja&ved=0CCgQFjAA&url=%68%74%74%70%3a%2f%2f%62%6c%6f%67%2e%66%65%6e%73%2e%6d%65%2f%6e%6f%64%65%6a%73%2d%73%6f%63%6b%65%74%69%6f%2d%63%68%61%74%2f&ei=rko5UrylAefOiAe7_IGQBw&usg=AFQjCNG6YWoZsJ_bSj8kTnMHcH51hYQkAA&bvm=bv.52288139,d.aGc" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"
58.215.204.118 - - [18/Sep/2013:06:51:36 +0000] "GET /wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1 HTTP/1.1" 304 0 "http://blog.fens.me/nodejs-socketio-chat/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"
58.215.204.118 - - [18/Sep/2013:06:51:35 +0000] "GET /wp-includes/js/jquery/jquery.js?ver=1.10.2 HTTP/1.1" 304 0 "http://blog.fens.me/nodejs-socketio-chat/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"
58.215.204.118 - - [18/Sep/2013:06:51:36 +0000] "GET /wp-includes/js/comment-reply.min.js?ver=3.6 HTTP/1.1" 304 0 "http://blog.fens.me/nodejs-socketio-chat/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"
58.215.204.118 - - [18/Sep/2013:06:51:36 +0000] "GET /wp-content/uploads/2013/08/chat.png HTTP/1.1" 200 48968 "http://blog.fens.me/nodejs-socketio-chat/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"
58.215.204.118 - - [18/Sep/2013:06:51:36 +0000] "GET /wp-content/uploads/2013/08/chat2.png HTTP/1.1" 200 59852 "http://blog.fens.me/nodejs-socketio-chat/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"
58.215.204.118 - - [18/Sep/2013:06:51:37 +0000] "GET /wp-content/uploads/2013/08/socketio.png HTTP/1.1" 200 80493 "http://blog.fens.me/nodejs-socketio-chat/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"
58.248.178.212 - - [18/Sep/2013:06:51:37 +0000] "GET /nodejs-grunt-intro/ HTTP/1.1" 200 51770 "http://blog.fens.me/series-nodejs/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MDDR; InfoPath.2; .NET4.0C)"
58.248.178.212 - - [18/Sep/2013:06:51:40 +0000] "GET /wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1 HTTP/1.1" 200 7200 "http://blog.fens.me/nodejs-grunt-intro/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MDDR; InfoPath.2; .NET4.0C)"
58.248.178.212 - - [18/Sep/2013:06:51:40 +0000] "GET /wp-includes/js/comment-reply.min.js?ver=3.6 HTTP/1.1" 200 786 "http://blog.fens.me/nodejs-grunt-intro/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MDDR; InfoPath.2; .NET4.0C)"
58.248.178.212 - - [18/Sep/2013:06:51:40 +0000] "GET /wp-includes/js/jquery/jquery.js?ver=1.10.2 HTTP/1.1" 200 45307 "http://blog.fens.me/nodejs-grunt-intro/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MDDR; InfoPath.2; .NET4.0C)"
58.248.178.212 - - [18/Sep/2013:06:51:40 +0000] "GET /wp-includes/js/jquery/jquery.js?ver=1.10.2 HTTP/1.1" 200 93128 "http://blog.fens.me/nodejs-grunt-intro/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MDDR; InfoPath.2; .NET4.0C)"
58.248.178.212 - - [18/Sep/2013:06:51:40 +0000] "GET /wp-includes/js/comment-reply.min.js?ver=3.6 HTTP/1.1" 200 786 "http://blog.fens.me/nodejs-grunt-intro/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MDDR; InfoPath.2; .NET4.0C)"
58.215.204.118 - - [18/Sep/2013:06:51:41 +0000] "-" 400 0 "-" "-"
58.215.204.118 - - [18/Sep/2013:06:51:41 +0000] "-" 400 0 "-" "-"
58.215.204.118 - - [18/Sep/2013:06:51:41 +0000] "-" 400 0 "-" "-"
157.55.35.40 - - [18/Sep/2013:06:51:43 +0000] "GET /rhadoop-java-basic/ HTTP/1.1" 200 26780 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
58.248.178.212 - - [18/Sep/2013:06:51:43 +0000] "GET /wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1 HTTP/1.1" 200 7200 "http://blog.fens.me/nodejs-grunt-intro/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MDDR; InfoPath.2; .NET4.0C)"
58.248.178.212 - - [18/Sep/2013:06:51:45 +0000] "GET /wp-content/uploads/2013/08/grunt.png HTTP/1.1" 200 199040 "http://blog.fens.me/nodejs-grunt-intro/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MDDR; InfoPath.2; .NET4.0C)"
58.215.204.118 - - [18/Sep/2013:06:52:26 +0000] "GET /nodejs-async/ HTTP/1.1" 200 12647 "http://blog.fens.me/nodejs-socketio-chat/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"
58.215.204.118 - - [18/Sep/2013:06:52:27 +0000] "GET /wp-includes/js/jquery/jquery.js?ver=1.10.2 HTTP/1.1" 304 0 "http://blog.fens.me/nodejs-async/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"
58.215.204.118 - - [18/Sep/2013:06:52:27 +0000] "GET /wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1 HTTP/1.1" 304 0 "http://blog.fens.me/nodejs-async/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"
58.215.204.118 - - [18/Sep/2013:06:52:27 +0000] "GET /wp-includes/js/comment-reply.min.js?ver=3.6 HTTP/1.1" 304 0 "http://blog.fens.me/nodejs-async/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"
163.177.71.12 - - [18/Sep/2013:06:52:29 +0000] "HEAD / HTTP/1.1" 200 20 "-" "DNSPod-Monitor/1.0"
58.215.204.118 - - [18/Sep/2013:06:52:29 +0000] "GET /nodejs-async/?cf_action=sync_comments&post_id=2357 HTTP/1.1" 200 48 "http://blog.fens.me/nodejs-async/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"
163.177.71.12 - - [18/Sep/2013:06:52:32 +0000] "HEAD / HTTP/1.1" 200 20 "-" "DNSPod-Monitor/1.0"
58.215.204.118 - - [18/Sep/2013:06:52:32 +0000] "-" 400 0 "-" "-"
58.215.204.118 - - [18/Sep/2013:06:52:33 +0000] "-" 400 0 "-" "-"
58.215.204.118 - - [18/Sep/2013:06:52:33 +0000] "-" 400 0 "-" "-"
101.226.68.137 - - [18/Sep/2013:06:52:36 +0000] "HEAD / HTTP/1.1" 200 20 "-" "DNSPod-Monitor/1.0"
101.226.68.137 - - [18/Sep/2013:06:52:39 +0000] "HEAD / HTTP/1.1" 200 20 "-" "DNSPod-Monitor/1.0"
183.195.232.138 - - [18/Sep/2013:06:53:12 +0000] "HEAD / HTTP/1.1" 200 20 "-" "DNSPod-Monitor/1.0"
183.195.232.138 - - [18/Sep/2013:06:53:12 +0000] "HEAD / HTTP/1.1" 200 20 "-" "DNSPod-Monitor/1.0"

主要时写一个过滤逻辑

涉及的类:WebLogBean.java,WebLogParser.java,WeblogPreProcess.java

webLogBean.java

package cn.itcast.bigdata.mr.weblogwash;public class WebLogBean {private String remote_addr;// 记录客户端的ip地址private String remote_user;// 记录客户端用户名称,忽略属性"-"private String time_local;// 记录访问时间与时区private String request;// 记录请求的url与http协议private String status;// 记录请求状态;成功是200private String body_bytes_sent;// 记录发送给客户端文件主体内容大小private String http_referer;// 用来记录从那个页面链接访问过来的private String http_user_agent;// 记录客户浏览器的相关信息private boolean valid = true;// 判断数据是否合法public String getRemote_addr() {return remote_addr;}public void setRemote_addr(String remote_addr) {this.remote_addr = remote_addr;}public String getRemote_user() {return remote_user;}public void setRemote_user(String remote_user) {this.remote_user = remote_user;}public String getTime_local() {return time_local;}public void setTime_local(String time_local) {this.time_local = time_local;}public String getRequest() {return request;}public void setRequest(String request) {this.request = request;}public String getStatus() {return status;}public void setStatus(String status) {this.status = status;}public String getBody_bytes_sent() {return body_bytes_sent;}public void setBody_bytes_sent(String body_bytes_sent) {this.body_bytes_sent = body_bytes_sent;}public String getHttp_referer() {return http_referer;}public void setHttp_referer(String http_referer) {this.http_referer = http_referer;}public String getHttp_user_agent() {return http_user_agent;}public void setHttp_user_agent(String http_user_agent) {this.http_user_agent = http_user_agent;}public boolean isValid() {return valid;}public void setValid(boolean valid) {this.valid = valid;}@Overridepublic String toString() {StringBuilder sb = new StringBuilder();sb.append(this.valid);sb.append("\001").append(this.remote_addr);sb.append("\001").append(this.remote_user);sb.append("\001").append(this.time_local);sb.append("\001").append(this.request);sb.append("\001").append(this.status);sb.append("\001").append(this.body_bytes_sent);sb.append("\001").append(this.http_referer);sb.append("\001").append(this.http_user_agent);return sb.toString();
}
}

WebLogParser.java,

package cn.itcast.bigdata.mr.weblogwash;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;public class WebLogParser {static SimpleDateFormat sd1 = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss", Locale.US);static SimpleDateFormat sd2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");public static WebLogBean parser(String line) {WebLogBean webLogBean = new WebLogBean();String[] arr = line.split(" ");if (arr.length > 11) {webLogBean.setRemote_addr(arr[0]);webLogBean.setRemote_user(arr[1]);webLogBean.setTime_local(parseTime(arr[3].substring(1)));webLogBean.setRequest(arr[6]);webLogBean.setStatus(arr[8]);webLogBean.setBody_bytes_sent(arr[9]);webLogBean.setHttp_referer(arr[10]);if (arr.length > 12) {webLogBean.setHttp_user_agent(arr[11] + " " + arr[12]);} else {webLogBean.setHttp_user_agent(arr[11]);}if (Integer.parseInt(webLogBean.getStatus()) >= 400) {// 大于400,HTTP错误webLogBean.setValid(false);}} else {webLogBean.setValid(false);}return webLogBean;}public static String parseTime(String dt) {String timeString = "";try {Date parse = sd1.parse(dt);timeString = sd2.format(parse);} catch (ParseException e) {e.printStackTrace();}return timeString;}public static void main(String[] args) {WebLogParser wp = new WebLogParser();String parseTime = wp.parseTime("18/Sep/2013:06:49:48");System.out.println(parseTime);}}

WeblogPreProcess.java

package cn.itcast.bigdata.mr.weblogwash;import java.io.IOException;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;public class WeblogPreProcess {static class WeblogPreProcessMapper extends Mapper<LongWritable, Text, Text, NullWritable> {Text k = new Text();NullWritable v = NullWritable.get();@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {String line = value.toString();WebLogBean webLogBean = WebLogParser.parser(line);//可以插入一个静态资源过滤(.....)/*WebLogParser.filterStaticResource(webLogBean);*/if (!webLogBean.isValid())return;k.set(webLogBean.toString());context.write(k, v);}}public static void main(String[] args) throws Exception {Configuration conf = new Configuration();Job job = Job.getInstance(conf);job.setJarByClass(WeblogPreProcess.class);job.setMapperClass(WeblogPreProcessMapper.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(NullWritable.class);FileInputFormat.setInputPaths(job, new Path("C:/weblog/input"));FileOutputFormat.setOutputPath(job, new Path("C:weblog/output"));job.waitForCompletion(true);}
}

创建目录:C:\weblog\input

放入日志

输出结果

true1.162.203.134-2013-09-18 13:47:35/images/my.jpg20019939"http://www.angularjs.cn/A0d9""Mozilla/5.0 (Windows
true1.202.186.37-2013-09-18 15:39:11/wp-content/uploads/2013/08/windjs.png20034613"http://cnodejs.org/topic/521a30d4bee8d3cb1272ac0f""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:18/nodejs-async-windjs/20010139"http://cnodejs.org/topic/521a30d4bee8d3cb1272ac0f""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:18/wp-content/themes/silesia/functions/css/shortcodes.css2002899"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:18/wp-content/themes/silesia/functions/js/shortcode.js200333"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:18/wp-content/themes/silesia/js/jquery.cycle.all.min.js2007784"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:18/wp-content/themes/silesia/js/load.js200715"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:18/wp-content/themes/silesia/style.css2007554"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:18/wp-includes/js/comment-reply.min.js?ver=3.6200786"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:18/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.12007200"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:18/wp-includes/js/jquery/jquery.js?ver=1.10.220032851"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:19/js/baidu.js200249"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:19/js/google.js200475"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:19/wp-content/themes/silesia/images/bullets/5.gif20062"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:19/wp-content/themes/silesia/images/crubms-div.png2001255"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:19/wp-content/themes/silesia/images/home-ico.png2001103"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:19/wp-content/themes/silesia/images/ico-meta.gif20073"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:19/wp-content/themes/silesia/images/natty-logo.png2001438"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:19/wp-content/themes/silesia/images/slide-bg.png200934"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:19/wp-content/themes/silesia/images/sprites/post-type.png2002009"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:19/wp-content/uploads/2013/08/stage1.png20010208"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:19/wp-content/uploads/2013/08/stage2.png20016419"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:19/wp-content/uploads/2013/08/stage3.png20015227"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:20/wp-content/uploads/2013/05/favicon.ico2001150"-""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:20/wp-content/uploads/2013/05/favicon.ico2001150"-""Mozilla/5.0 (Macintosh;
true1.202.186.37-2013-09-18 15:39:23/nodejs-async-windjs/?cf_action=sync_comments&post_id=197420048"http://blog.fens.me/nodejs-async-windjs/""Mozilla/5.0 (Macintosh;
true1.202.186.37-20

清晰weblog日志,过滤不合法的记录相关推荐

  1. 一文搞懂Java日志级别,重复记录、丢日志问题

    1 SLF4J 日志行业的现状 框架繁 不同类库可能使用不同日志框架,兼容难,无法接入统一日志,让运维很头疼! 配置复杂 由于配置文件一般是 xml 文件,内容繁杂!很多人喜欢从其他项目或网上闭眼co ...

  2. android 输入过滤,Android Studio添加日志过滤方式

    1.点击下方的 Android Monitor 2.点击右侧的选项菜单 3.点击菜单下拉列表中的 Edit Filter Configuration,打开配置界面 4.配置界面说明 第1部分是为这个过 ...

  3. java运行异常日志_使用log4j记录Java中的运行时异常

    小编典典 我不确定这是否是您要寻找的,但是有一个终止线程的异常处理程序.它是线程异常未明确捕获的任何异常的处理程序. 默认"未捕获的异常处理程序"只是调用printStackTra ...

  4. Spark Steaming流式日志过滤与分析

    Spark Steaming流式日志过滤与分析 这篇大概讲的是 spark steaming 监听 hdfs 的某个目录,当你在终端A使用 spark-submit 运行 Log2DB.py 文件后, ...

  5. logback日志过滤

    背景: 我们在采用日志框架logback的时候,有时候启动项目的时候会刷出很多不重要多余的日志,影响我们在控制台查看日志,这时候我们就可以在logback-spring.xml文件中配置过滤日志了. ...

  6. 络达开发---串口日志日志过滤

    平台:AB1565M SDK版本:V2.11.0 开发环境:windows10 采用官方ATK中的日志工具可以通过硬件物理串口来实时查看芯片中软件的运行日志.如下图所示,其实该ATK工具为一若干个工具 ...

  7. php日志 monolog,Laravel 集成的 Monolog 库对日志进行配置和记录实例

    本文章为各位介绍一篇关于Laravel 集成的 Monolog 库对日志进行配置和记录的实例,具体的如下希望对各位吸帮助. 对于大型系统而言,日志是不可或缺的模块,Laravel自然也对日志提供了完善 ...

  8. 批量大文本筛选过滤工具开发记录

    批量大文本筛选过滤工具开发记录 本周花了两三天的时间做了一个大文本数据筛选工具,主要是针对excel打开很慢或者无法打开的几百兆乃至几G的csv.txt文件,提供常规的数据筛选.统计和输出功能.这个大 ...

  9. 锐捷日志服务器系统,CCIE的梦-锐捷交换机日志过滤

    应用场景: 缺省情况下,系统打出来的日志信息都可以输出到各个方向,当某些情况下,用户可能不关心某些日志信息或者只关心某些日志信息,则可以使用日志过滤功能,对该日志信息进行过滤. 功能介绍: 1.在某些 ...

最新文章

  1. 独家 | 2018年Analytics Vidhya上最受欢迎的15篇数据科学和机器学习文章
  2. python实训项目-Python开发基础-项目实训-在线投票系统.pptx
  3. hdu - 1827 Summer Holiday (强连通)
  4. lambda表达式方法泛型_模板方法模式–使用Lambda表达式,默认方法
  5. day06 hashlib模块
  6. 2043. 简易银行系统
  7. java基础学完_学完Java基础应该继续学什么?
  8. Go语言中使用panic和recover简化错误处理
  9. Premiere 音频视频基本设置
  10. 计算机中计算平均数的函数是什么,Excel里怎么求平均数的?函数是什么?!excle2010怎么求平均数...
  11. 【WEB服务器】什么是WEB服务器
  12. Android本地数据存储:Shared Preferences安全风险浅析
  13. FPGA开发中sof和elf文件的合并与格式转换
  14. [09-Dec-2012] 《少年pi的奇幻之旅》 -推荐
  15. 《SteamVR2.0/Input》(Yanlz+SteamVR+Input+OpenVR+Runtime+SteamVR_Action+立钻哥哥+==)
  16. 黑苹果 macOS 无法修复磁盘 XXX 已修复
  17. java排他_排他文件锁实现(Java版本)
  18. 三分钟了解企业产品发布会直播全流程
  19. Cannot construct instance of `com.baomidou.mybatisplus.core.metadata.IPage`
  20. Windows10中Edge浏览器突然出现“无法访问该页面”问题的解决方案

热门文章

  1. codeforces1718 A1.Burenka and Traditions (easy version)
  2. docker使用教程
  3. 百家讲坛_我读经典17_《易经》与人生-曾仕强(转)
  4. 人工智能——可信度方法
  5. 品优购电商系统开发 第5章 商品录入【1】
  6. Python 多态,概念与示例,精简篇
  7. 类的继承编程训练1—储蓄卡与信用卡
  8. 唉,早知如此,何必当初
  9. SQL快速入门、查询(SqlServer)[郝斌SqlServer完整版]
  10. halide 资源整理