如何通过Java读取到Windows系统日志evtx文件
近日公司有个需求,需要调研如何使用Java来读取Windows日志文件(类型:应用程序,安全,Setup,系统)
一番调研以后,在仅使用java的基础上系统日志文件似乎不太可能(就个人调研结果来看),再通过多渠道查询(百度、chargpt),找到2个可能的实现的方案:
1、使用Java来调用C++方法
JNA(Java Native Access)是可以让Java调用C++生成的DLL(动态链接库),将C++中的方法,以Java接口的方式来实现。
注:该方法理论是是可行的,但编者没有实践。。。
2、使用第三方工具来实现,微软的日志分析工具-LogParser
2.1 实现思路:
在本地安装LogParser,Java代码通过调用本机命令行的方式,调用LogParser,然后把分析后的结果,以csv的方式输出到文件中(LogParser可选多种输出方式),然后java再读取csv文件内容即可拿到日志信息。
2.2 Java调用命令行的代码
try {
String logParserPath = "D:\\Program Files (x86)\\Log Parser 2.2\\LogParser.exe";
ProcessBuilder processBuilder = new ProcessBuilder(logParserPath, "-i:EVT", "-o:csv", "SELECT * INTO D:\\output.csv FROM D:\\Security.evtx");
Process process = processBuilder.start();
process.waitFor();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
其中:D:\output.csv 为存储输出结果的文件地址,D:\Security.evtx为日志文件
2.3、 关于LogParser的一些使用文档信息
2.3.1:Log Parser的日志可以通过SQL进行查询
sql字段:
EventLog(S) RecordNumber(I) TimeGenerated(T)
TimeWritten(T) EventID(I) EventType(I)
EventTypeName(S) EventCategory(I) EventCategoryName(S)
SourceName(S) Strings(S) ComputerName(S)
SID(S) Message(S) Data(s)
S:String 数组
调用格式:
EXTRACT_TOKEN(EventTypeName, 0, '|') )
EventTypeName:字段名
0:顺序,从0开始
|:分隔符
T:Time。时间类
I:intger。整数类
T和I二者都是直接调用:
SELECT
TO_DATE(TimeGenerated),
RecordNumber,
TO_UPPERCASE(EXTRACT_TOKEN(EventTypeName, 0, '|')), SourceName
FROM System
字段解析:
RecordNumber:日志记录编号从0开始
TimeGenerated:事件生成时间
TimeWritten:事件记录时间
EventID:事件ID
EventType:事件类型
Strings:字符串数组,应该对应者日志中的EventData,每个事件包含的信息应该不一样
这里只罗列了一部分字段,还有其它字段大家按需了解使用即可。
写在最后:
- 此贴为编者自己记录所用,仅供参考
- 写的比较乱,如有笔误,请指正
- 未完待续
如何通过Java读取到Windows系统日志evtx文件的更多相关文章
- 【转】Java读取matlab的.mat数据文件
参考:Java读取mat文件 下载链接:ujmp jmatio 下载完两个.jar文件之后,如何引用到java项目当中?项目名称->右键->Property->Java Build ...
- 解决:java 读取 resources 下面的 json 文件
前言:java 读取 工程下的配置文件,文件类型为 json(*.json),记录一下始终读取不到 json 文件的坑.maven项目 直接上工具类代码 package com.yule.compon ...
- java读取resource/通过文件名获取文件类型
java读取resource java读取resource目录下文件的方法: 借助Guava库的Resource类 Resources.getResource("test.txt" ...
- java读取目录下所有csv文件数据,存入三维数组并返回
package dwzx.com.get; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; ...
- java 读取固定目录下的文件(和上篇差点儿相同)
package gao.org; import java.io.FileNotFoundException; import java.io.IOException; import java.io.Fi ...
- java读取jar包中的文件
随手写了一个java小工具,maven打包成功后,发现工具总是读不到打在jar包中的文件信息,要读取的文件位于 /src/main/resources 目录下,打包成功后,文件就在jar包中根目录下, ...
- java读取package中的properties文件java.util.MissingResourceException
文件结构: /build/classes/d914/Hello.class /build/classes/d914/mess.properties /build/classes/d914/mess_z ...
- Java 读取目录下的所有文件
package util; import java.io.File; import java.util.ArrayList; import java.util.List; import org.apa ...
- Java 读取某个目录下所有文件、文件夹
/** * @Author: * @Description:获取某个目录下所有直接下级文件,不包括目录下的子目录的下的文件,所以不用递归获取 * @Date: */ public static Lis ...
- (转) Java读取文本文件中文乱码问题
http://blog.csdn.net/greenqingqingws/article/details/7395213 最近遇到一个问题,Java读取文本文件(例如csv文件.txt文件等),遇到中 ...
随机推荐
- 访问不到tomcat下的静态资源文件
问题:idea+tomcat 测试Servlet,居然访问不到与WEB-INF同级的静态资源1.html.又不是访问WEB-INF里的文件.... 分析:可能是开发目录中的文件没有自动复制到部署目录. ...
- 最好用的.NET敏捷开发框架-RDIFramework.NET V3.6版全新发布 100%源码授权
RDIFramework.NET,基于.NET的快速信息化系统敏捷开发框架.10年沉淀.历经上千项目检验,致力于企业智能化开发,帮助提升软件开发效率.最好用的.NET开发框架,100%源码授权. 1. ...
- GPT-4:思考的曙光还是数据的缩影?
海盗分金,GPT-4初露锋芒 GPT系列模型横空出世后,其是否真实具有思考和推理的能力一直被业界关注.GPT-3.5在多条狗问题和海盗分金问题上表现糟糕.GPT-4在这两个谜题上给出的答案令人惊喜,甚 ...
- 会使用ChatGPT写作业找工作会不会加分啊!!!代码问题直接问ChatGPT不比CSDN好多了吗
1.使用reactnative写一个数字游戏 2.MySQL问题
- OpenCv人脸检测技术-(实现抖音特效-给人脸戴上墨镜)
OpenCv人脸检测技术-(实现抖音特效-给人脸戴上墨镜) 本文章用的是Python库里的OpenCv. OpenCv相关函数说明 import cv2 # 导入OpenCv库 cv2.imread( ...
- error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file o
error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file o ...
- 获取电脑的网络连接状态(五)WebClient
网络连接判断,使用WebClient测试获取: 1 public static bool IsWebClientConnected() 2 { 3 try 4 { 5 using (var clien ...
- Python-psycopg2的简单使用
一.简介 psycopg2 库是 python 用来操作 postgreSQL 数据库的第三方库. 二.安装 1.执行如下命令安装 pip3 install psycopg2 2.使用Pycharm安 ...
- Swift WisdomProtocol 面向协议编程(下)
WisdomProtocol 面向协议编程(下) @[TOC] WisdomProtocol SDK 面向协议编程 # Welcome to use WisdomProtocol WisdomProt ...
- 案例:自来水厂项目PM编制问题-检查记录
1.策划书部分 选择错误.缺失数据 编的太假了 工期对不上.就算按合同实际也没这么长 合同才210天,当然你算上现在可以编远点,但是编合理点 一些瞎编 这瞎编我信了 但是后面空的表是干啥捏?而且数也不 ...