`
youngerblue
  • 浏览: 44275 次
  • 性别: 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  
思路不错,基本的数据过滤需求可以满足。感谢楼主

相关推荐

    log4j.rar java写LOG日志的驱动

    6. **Configurator(配置器)**:读取并解析Log4j的配置文件,设置Logger、Level、Appender等。 **二、Log4j的使用步骤** 1. **添加依赖**:在项目中引入Log4j的jar包或依赖库。 2. **配置Log4j**:创建`log4j....

    一个Java写的日志分析工具

    在Java中,日志分析工具可能使用了诸如`java.util.logging`、`log4j`、`slf4j`或`logback`等流行的日志框架。这些框架提供了记录、控制和格式化日志的能力,使得开发者能够方便地跟踪和理解程序行为。 描述中提到的...

    java swing用Logger输出错误日志.docx

    `SimpleFormatter`将日志输出为易于阅读的文本格式,而`XMLFormatter`则生成XML格式的日志,更便于解析和分析。 在代码中,我们可以创建`FileHandler`并将其添加到`Logger`实例,以实现自定义的日志输出。下面是一...

    日志文件解析MySQL版

    通常,我们会使用如`log4j`、`logback`这样的日志框架来生成日志,而解析这些日志文件则需要自定义的解析器。解析器通常会通过正则表达式或者自定义的逻辑来识别日志文件中的关键信息,如时间戳、级别、类名、方法名...

    java 实例log分析

    在Java编程领域,日志(Log)分析是一个重要的实践环节,尤其对于系统监控、故障排查以及性能优化。本文将深入探讨如何使用Java实现一个日志分析的实例,以"AccessLogAdmin"为例,来理解其背后的原理和技术要点。 ...

    使用Java正则表达式分析处理日志

    Java作为广泛使用的编程语言,提供了强大的正则表达式支持,使得我们能够有效地解析和处理日志文件。本篇将围绕“使用Java正则表达式分析处理日志”这一主题,探讨如何利用Java的正则表达式功能来提取、过滤和操作...

    java发送syslog日志,支持多目的ip

    Java发送Syslog日志是一种常见的系统日志管理方式,尤其在分布式系统中,它能帮助开发者收集、分析和处理来自不同节点的日志信息。Syslog协议是一个标准的日志消息传递协议,广泛应用于网络设备、操作系统和其他软件...

    自己开发的Windows日志获取源码

    《使用Java开发Windows日志获取程序的深度解析》 在信息技术领域,日志记录是系统监控和故障排查的重要环节。Windows操作系统提供了丰富的日志信息,包括Security、Application等多种类型,这些日志对于开发者和...

    log日志的实现

    "log日志的实现"这个主题涵盖了如何在应用程序中有效地创建、管理和分析日志信息。 首先,我们来看一下两个与标签相关的框架——Struts和iBatis。Struts是一个用于构建Java Web应用的MVC框架,而iBatis则是一个SQL...

    Log Viewer(日志查看器)

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

    网站日志 .log文件

    网站日志(.log文件)是记录Web服务器与客户端交互过程的重要工具,它们记录了每一次HTTP请求和响应的详细信息,对于系统...在实际工作中,掌握.log文件的解析和分析技巧,将极大地提升我们的工作效率和业务洞察力。

    java实时日志解析处理

    在Java开发中,实时日志解析处理是一项至关重要的任务,特别是在大规模分布式系统或者高并发环境中。日志是系统运行状态的记录,对于故障排查、性能优化、安全监控等都有着不可替代的作用。本篇将深入探讨Java如何...

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

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

    Log日志分析源码

    本文将深入探讨"Log日志分析源码",特别是Log.java的底层JNI(Java Native Interface)代码程序结构。我们将依次解析涉及到的文件:JNIHelp-.c、AndroidRuntime.cpp、android_util_Log.cpp、jni.h、JNIHelp.h以及Log...

    oracle日志查看程序

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

    java解析JSON所需的全部jar包

    Java解析JSON是一个常见的任务,特别是在开发Web服务或者处理API响应时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java中,有许多库可以帮助...

    java解析表达式JEXL实现办法

    Java解析表达式是一个常见的需求,特别是在需要动态计算或者执行用户输入的简单脚本时。JEXL(Java Expression Language)是Apache Commons项目提供的一种轻量级的表达式语言,它允许我们在Java应用程序中方便地执行...

    java提取并分析sqlserver的日志

    综上所述,通过Java提取和分析SQL Server日志是一项涉及数据库连接、文件I/O、日志解析和分析的综合任务。理解这些知识点并熟练运用,可以帮助我们更好地管理和维护SQL Server环境,提升系统的稳定性和性能。

    Java解析apk所需jar包

    在实际开发中,可能还需要结合其他工具和库,如使用Gradle或Maven管理依赖,使用Log4j进行日志记录,以及各种安全分析工具来检查APK的安全性。 总之,Java解析APK涉及到多个步骤,包括读取APK结构、解析XML、处理...

Global site tag (gtag.js) - Google Analytics