`
youngerblue
  • 浏览: 43335 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java解析log日志

    博客分类:
  • java
阅读更多

自己写的一段日志解析的java程序,比较乱,先记录(小文件):

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

import org.json.JSONObject;

public class ParseLog {

	private static String VIEWSTRING = "正在查看新闻:";
	private static String APPLYSTRING = "写过的新闻";
	private static String SEARCHSTRING = "正在搜索新闻:";
	private static String USERTAG = "用户:";

	/**
	 * 用戶名,用戶行為,以key-value方式存储
	 * 用户行为 以json方式存储
	 */
	public static void readFileByLines(String fileName) {
		File file = new File(fileName);
		BufferedReader reader = null;
		try {
			System.out.println("以行为单位读取文件内容,一次读一整行:");
			InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "UTF-8");
			reader = new BufferedReader(isr);
			String tempString = null;
			Map<String, Object> map = new HashMap<String, Object>();
			// 一次读入一行,直到读入null为文件结束
			while ((tempString = reader.readLine()) != null) {
				if (tempString.contains(VIEWSTRING)) {
					int userindex = tempString.indexOf(USERTAG);
					String username = tempString.substring(userindex + 3, tempString.indexOf(",", userindex));
					int done = tempString.indexOf(VIEWSTRING);
					String ewId = tempString.substring(done + VIEWSTRING.length());
					if (username != null && username != "") {
						try {
							if (map.containsKey(username)) {
								JSONObject json = (JSONObject) map.get(username);
								if (json.has("view")) {
									if (!json.get("view").toString().contains(ewId)) {
										json.put("view", json.get("view") + "," + ewId);
									}
								} else {
									json.put("view", ewId);
								}
								map.put(username, json);
							} else {
								JSONObject json = new JSONObject();
								json.put("view", ewId);
								map.put(username, json);
							}
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
				}

				if (tempString.contains(APPLYSTRING)) {
					int userindex = tempString.indexOf(USERTAG);
					String username = tempString.substring(userindex + 3, tempString.indexOf(",", userindex));
					int done = tempString.indexOf(APPLYSTRING);
					String ewId = tempString.substring(done + APPLYSTRING.length());

					if (username != null && username != "") {
						try {
							if (map.containsKey(username)) {
								JSONObject json = (JSONObject) map.get(username);
								if (json.has("apply")) {
									if (!json.get("apply").toString().contains(ewId)) {
										json.put("apply", json.get("apply") + "," + ewId);
									}
								} else {
									json.put("apply", ewId);
								}
								map.put(username, json);
							} else {
								JSONObject json = new JSONObject();
								json.put("apply", ewId);
								map.put(username, json);
							}
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
				}

				if (tempString.contains(SEARCHSTRING)) {
					int userindex = tempString.indexOf(USERTAG);
					String username = tempString.substring(userindex + 3, tempString.indexOf(",", userindex));
					int done = tempString.indexOf(SEARCHSTRING);
					String keyword = URLDecoder.decode(tempString.substring(done + SEARCHSTRING.length()), "utf-8");

					if (username != null && username != "") {
						try {
							if (map.containsKey(username)) {
								JSONObject json = (JSONObject) map.get(username);
								if (json.has("search")) {
									if (!json.get("search").toString().contains(keyword.trim())) {
										json.put("search", json.get("search") + "," + keyword.trim());
									}
								} else {
									json.put("search", keyword.trim());
								}
								map.put(username, json);
							} else {
								JSONObject json = new JSONObject();
								json.put("search", keyword.trim());
								map.put(username, json);
							}
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
				}
			}
			reader.close();
			Iterator<Entry<String, Object>> it = map.entrySet().iterator();
			while (it.hasNext()) {
				Entry<String, Object> entry = it.next();
				System.out.println(entry.getKey() + "-----------" + entry.getValue());
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (reader != null) {
				try {
					reader.close();
				} catch (IOException e1) {
				}
			}
		}
	}

	public static void main(String[] args) {
		ParseLog.readFileByLines("C:\\Users\\lyh\\Desktop\\log");
	}

}
 
分享到:
评论
1 楼 孤独水寒cbq 2016-07-28  
思路不错,基本的数据过滤需求可以满足。感谢楼主

相关推荐

    Log Viewer(日志查看器)

    Java Log Viewer(日志查看器)能够自定义log表达式,具备的功能包括: 1.可以手动重载日志。这样既可以防止自动跟踪日志影响当前关注的内容,又可以在需要时方便地载入最新的日志。 2.对不同级别的日志项着色标注。...

    日志文件解析后用jdbc入库的代码,见博客描述

    logs中就是为我们日常记录的日志文件,你要对起进行分析记录入表。 这些日志文件名都是有一定规则每小时生成一个。拿附件中的文件来说access_log.2009-04-30.17.log 表示2009年4月30日17时的数据。 记录到数据里对应...

    oracle日志查看程序

    用java写的一个oracle日志查看器源代码,调用oracle数据库的logminer过程。包含一个不错的日历选择面板

    Log Viewer日志查看器

    Java Log Viewer(日志查看器)能够自定义log表达式,具备的功能包括: 1.可以手动重载日志。这样既可以防止自动跟踪日志影响当前关注的内容,又可以在需要时方便地载入最新的日志。 2.对不同级别的日志项着色标注。...

    Java日志体系全解析:架构师必掌握的关键技术和最佳实践

    本文详细解析了Java日志体系的演变历程和关键技术点,帮助开发者和架构师掌握其精髓,优化日志管理。 最初,log4j作为早期流行的日志框架,广泛应用于Java项目中。然而,随着Java平台的发展,出现了多种日志框架,...

    Nginx-Log-Analyzer

    本项目采用,瑞民族之光幸(Java)开发硬性条件请【最高,最低,最低限度】将nginx日志格式设置为如下格式log_format main '$remote_addr #$http_x_forwarded_for #$time_local #$status ' '#$ssl_protocol #$ssl_...

    读取LCM的日志文件

    这个程序可以用,但是由于调试用的lcm数据涉及到机密,故调试日志文件暂不上传,这个程序可以将lcm保存在日志中的数据抓出来 lcm(Lightweight Communications and Marshalling) 是一组类库(含多种语言如java,c等)...

    Log2Graphite:高性能日志度量解析器

    Log2Graphite 应用程序是纯 Java 应用程序,使用 Java 1.7 进行测试。 多线程,高性能。特征Log2Graphite 支持: 以 1 分钟粒度上传实时指标海关访问.log 格式。 它可以使用 apache / nginx 风

    java日志框架视频教程

    Log4j组件解析3. Layout格式4. Appender输出5. 自定义Logger章节四:JCL1. 快速入门2. 原理解析章节五:Slf4j1. 快速入门2. 绑定日志实现3. 桥接旧日志实现4. 原理解析章节六:Logback1. 快速入门2. 配置文件3. ...

    mysql将bin-log日志文件转为sql文件的方法

    mysql打开bin-log日志后,mysql数据库的非查询操作会将记录保存到bin-log文件中。一般bin-log日志文件不能打开查看的,需要用到mysql的工具进行。假设/mysql/data/目录中存放着二进制文件mysql-bin.000011。需要将...

    日志解析器:各种日志解析器功能

    一个简单的Java库,用于将各种已知的日志文件格式解析为强类型特定于格式的Java对象。 数据进入强类型对象后,便可以更轻松地对大文件进行分析。 当前支持的格式为: Amazon AWS ELB日志 Adobe Experience ...

    logparser:通过Java,Hadoop,Hive,Pig,Flink,Beam,Storm,Drill等轻松解析Apache HTTPD和NGINX访问日志。

    Apache HTTPD和NGINX访问日志解析器 这是一个Logparsing框架,旨在简化和访问日志文件的解析。 基本思想是,您应该能够拥有一个解析器,您可以通过简单地告诉该行写入了哪些配置选项来构造该解析器。 这些配置选项...

    log-parser:Java Log Parser应用程序

    该应用程序基本上是一个日志文件解析器。 另外,它用于搜索在给定时间段内发出n个请求的IP。 如果程序参数中有日志文件,则将日志保存到MySQL。 日志文件是应用程序的可选参数。 如果未提供,则在现有日志中搜索IP...

    fluentbit-containerd-cri-o-json-log:使用Fluent Bit解析CRI JSON日志-适用于fluentbit,kubernetes,contained和cri-o

    containerd和CRI-O使用CRI Log格式,该格式略有不同,并且需要进行其他解析才能解析JSON应用程序日志。 我们找不到合适的端到端示例,因此我们从各种GitHub问题中创建了此示例。 缺少某些功能(例如多行日志),...

    Android代码-SAF-Kotlin-log

    支持自定义对象的解析处理,将其打印成自己想要的风格。 使用方法: 它可以在任何使用Java、Kotlin开发的Android项目中使用。如果您的项目中只使用Java,也无需额外添加kotlin的配置。 1.tag使用 如果不考虑显示...

    parse-changelog:Javascript ChangeLog解析器

    纯Java的ChangeLog解析器,用于提取每个版本的更改。 当前仅支持使用Markdown编写的ChangeLogs。 用法 使用以下命令安装节点模块: $ npm i parse-changelog 并使用以下命令解析您的变更日志: var fs = require...

    gc-log-parser:Oracle JDK 的 Java GC 日志解析器

    该 Java 库为 Oracle JDK 1.7 和 1.8 生成的 GC 日志提供解析器。 它包括一个命令行实用程序,用于从日志生成 CSV 文件。 您可以将它们加载到您最喜欢的工具中进行分析。 请参阅以下鼓舞人心的文章作为示例 -。 要求...

    jitwatch:Java HotSpot JIT编译器的日志分析器可视化工具。 检查内联决策,热门方法,字节码和汇编。 在JavaFX用户界面中查看结果

    HotSpot JIT编译器的日志分析器和可视化工具。 JITWatch 视频介绍 我在JITWatch 上的LJC闪电演讲中的 有关说明和屏幕截图,请参见Wiki。 JITWatch用户界面是使用JavaFX构建的。 这包含在Oracle JDK中。 如果您...

    embulk-parser-multiline-log-sample

    这是一个解析器插件,用于解析包含 Java 应用程序堆栈跟踪的虚构Java 应用程序日志。 这个插件只是 Embulk 解析器插件的一个示例。 请根据您的需要修改插件。 概述 插件类型:解析器 猜测支持:否 配置 charset : ...

Global site tag (gtag.js) - Google Analytics