如何通过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文件等),遇到中 ...
随机推荐
- python:调用内置函数
问题描述:尝试下博客园如何上传GIF # hzh 每天进步一点点 # 2022/5/13 17:24 import colorama import time import os colorama.in ...
- 如何使用Webpack工具构建项目
起步 webpack 用于编译 JavaScript 模块.一旦完成 安装,你就可以通过 webpack CLI 或 API 与其配合交互.如果你还不熟悉 webpack,请阅读 核心概念 和 对比, ...
- .NET周报 【4月第4期 2023-04-23】
国内文章 2023成都.NET线下技术沙龙圆满结束 https://www.cnblogs.com/edisonchou/p/2023_chengdu_dotnet_club_activity_rev ...
- Windows防病毒Defender 排除病毒误报
开发的软件安装后,windows上提示病毒,默默被系统删除了. 一开始以为是自己软件的签名问题,后面发现,将被隔离的文件还原,文件的签名是存在的. 这是微软denfender的误报,为啥会报病毒呢? ...
- 【Dotnet 工具箱】DotNetCorePlugins- 动态加载和卸载 .NET 程序插件
你好,这里是 Dotnet 工具箱,定期分享 Dotnet 有趣,实用的工具和组件,希望对您有用! 1. DotNetCorePlugins- 动态加载和卸载 .NET 程序插件 DotNetCore ...
- JavaWeb 中 Filter过滤器
Filter过滤器 每博一文案 师傅说:人生无坦途,累是必须的背负,看多了,人情人暖,走遍了离合聚散,有时会 在心里对自己说,我想,我是真的累了,小时候有读不完的书,长大后有赚不尽的力. 白天在外要奋 ...
- 聚合短信PHP代码示例短信接口调用CURL方法
聚合的短信相信大家已经做多了吧,网上的代码看了下就是感觉太繁琐了,不过网上的也是比较好的,用的是post方法,更安全,因我们的项目是在服务器上请求,又绑定了白名单 ,所以弄了个简单点的自己用,参考如下 ...
- AI天后,在线飙歌,人工智能AI孙燕姿模型应用实践,复刻《遥远的歌》,原唱晴子(Python3.10)
忽如一夜春风来,亚洲天后孙燕姿独特而柔美的音色再度响彻华语乐坛,只不过这一次,不是因为她出了新专辑,而是人工智能AI技术对于孙燕姿音色的完美复刻,以大江灌浪之势对华语歌坛诸多经典作品进行了翻唱,还原度 ...
- 【GiraKoo】面试者如何忽悠一个不懂技术的面试官
萌新面试者如何忽悠一个不懂技术的面试官 由于公司业务需要,做了几天Android的面试官. 作为一个完全没有做过Android项目的开发者,我无法问出具体的框架,技术细节. 对于萌新,新公司,新业务往 ...
- .Net8顶级技术:边界检查之IR解析(慎入)
前言 C#这种语言之所以号称安全的,面向对象的语言.这个安全两个字可不是瞎叫的哦.因为JIT会检查任何可能超出分配范围的数值,以便使其保持在安全边界内.这里有两个概念,其一边界检查,其二IR解析.后者 ...