自己写的一段日志解析的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");
}
}
分享到:
相关推荐
6. **Configurator(配置器)**:读取并解析Log4j的配置文件,设置Logger、Level、Appender等。 **二、Log4j的使用步骤** 1. **添加依赖**:在项目中引入Log4j的jar包或依赖库。 2. **配置Log4j**:创建`log4j....
在Java中,日志分析工具可能使用了诸如`java.util.logging`、`log4j`、`slf4j`或`logback`等流行的日志框架。这些框架提供了记录、控制和格式化日志的能力,使得开发者能够方便地跟踪和理解程序行为。 描述中提到的...
`SimpleFormatter`将日志输出为易于阅读的文本格式,而`XMLFormatter`则生成XML格式的日志,更便于解析和分析。 在代码中,我们可以创建`FileHandler`并将其添加到`Logger`实例,以实现自定义的日志输出。下面是一...
通常,我们会使用如`log4j`、`logback`这样的日志框架来生成日志,而解析这些日志文件则需要自定义的解析器。解析器通常会通过正则表达式或者自定义的逻辑来识别日志文件中的关键信息,如时间戳、级别、类名、方法名...
在Java编程领域,日志(Log)分析是一个重要的实践环节,尤其对于系统监控、故障排查以及性能优化。本文将深入探讨如何使用Java实现一个日志分析的实例,以"AccessLogAdmin"为例,来理解其背后的原理和技术要点。 ...
Java作为广泛使用的编程语言,提供了强大的正则表达式支持,使得我们能够有效地解析和处理日志文件。本篇将围绕“使用Java正则表达式分析处理日志”这一主题,探讨如何利用Java的正则表达式功能来提取、过滤和操作...
Java发送Syslog日志是一种常见的系统日志管理方式,尤其在分布式系统中,它能帮助开发者收集、分析和处理来自不同节点的日志信息。Syslog协议是一个标准的日志消息传递协议,广泛应用于网络设备、操作系统和其他软件...
《使用Java开发Windows日志获取程序的深度解析》 在信息技术领域,日志记录是系统监控和故障排查的重要环节。Windows操作系统提供了丰富的日志信息,包括Security、Application等多种类型,这些日志对于开发者和...
"log日志的实现"这个主题涵盖了如何在应用程序中有效地创建、管理和分析日志信息。 首先,我们来看一下两个与标签相关的框架——Struts和iBatis。Struts是一个用于构建Java Web应用的MVC框架,而iBatis则是一个SQL...
Java Log Viewer(日志查看器)能够自定义log表达式,具备的功能包括: 1.可以手动重载日志。这样既可以防止自动跟踪日志影响当前关注的内容,又可以在需要时方便地载入最新的日志。 2.对不同级别的日志项着色标注。...
网站日志(.log文件)是记录Web服务器与客户端交互过程的重要工具,它们记录了每一次HTTP请求和响应的详细信息,对于系统...在实际工作中,掌握.log文件的解析和分析技巧,将极大地提升我们的工作效率和业务洞察力。
在Java开发中,实时日志解析处理是一项至关重要的任务,特别是在大规模分布式系统或者高并发环境中。日志是系统运行状态的记录,对于故障排查、性能优化、安全监控等都有着不可替代的作用。本篇将深入探讨Java如何...
logs中就是为我们日常记录的日志文件,你要对起进行分析记录入表。 这些日志文件名都是有一定规则每小时生成一个。拿附件中的文件来说access_log.2009-04-30.17.log 表示2009年4月30日17时的数据。 记录到数据里对应...
本文将深入探讨"Log日志分析源码",特别是Log.java的底层JNI(Java Native Interface)代码程序结构。我们将依次解析涉及到的文件:JNIHelp-.c、AndroidRuntime.cpp、android_util_Log.cpp、jni.h、JNIHelp.h以及Log...
用java写的一个oracle日志查看器源代码,调用oracle数据库的logminer过程。包含一个不错的日历选择面板
Java解析JSON是一个常见的任务,特别是在开发Web服务或者处理API响应时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java中,有许多库可以帮助...
Java解析表达式是一个常见的需求,特别是在需要动态计算或者执行用户输入的简单脚本时。JEXL(Java Expression Language)是Apache Commons项目提供的一种轻量级的表达式语言,它允许我们在Java应用程序中方便地执行...
综上所述,通过Java提取和分析SQL Server日志是一项涉及数据库连接、文件I/O、日志解析和分析的综合任务。理解这些知识点并熟练运用,可以帮助我们更好地管理和维护SQL Server环境,提升系统的稳定性和性能。
在实际开发中,可能还需要结合其他工具和库,如使用Gradle或Maven管理依赖,使用Log4j进行日志记录,以及各种安全分析工具来检查APK的安全性。 总之,Java解析APK涉及到多个步骤,包括读取APK结构、解析XML、处理...