如何通过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文件等),遇到中 ... 
随机推荐
- [Java SE]Java SE异常合集
			1 概述 2 问题集 Q1 : JAVA应用程序启动时报"A fatal error has been detected by the Java Runtime Environment: E ... 
- Sqlmap注入dvwa平台low级别
			工具介绍:sqlmap是一款开源的软件 SQL注入攻击是黑客对数据库进行攻击的常用手段之一.随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于程序员的水平及经验也参差不 ... 
- Semantic Kernel 入门系列:💾Native Function
			语义的归语义,语法的归语法. 基础定义 最基本的Native Function定义只需要在方法上添加 SKFunction 的特性即可. using Microsoft.SemanticKernel. ... 
- PHP创建SqlLite数据表并让ID自增
			<?php class MyDB extends SQLite3 { function __construct() { $this->open('test.db'); } } $db = ... 
- 一文吃透Elasticsearch
			本文已经收录到Github仓库,该仓库包含计算机基础.Java基础.多线程.JVM.数据库.Redis.Spring.Mybatis.SpringMVC.SpringBoot.分布式.微服务.设计模式 ... 
- Unable to find real location for: <frozen codecs>
			问题描述 pycharm 在debug时出现了如下bug ----------------------------------------------------------------------- ... 
- 探索FSM (有限状态机)应用
			我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值.. 本文作者:木杪 有限状态机(FSM) 是计算机科学中的一种数学模型 ... 
- 使用扩展函数方式,在Winform界面中快捷的绑定树形列表TreeList控件和TreeListLookUpEdit控件
			在一些字典绑定中,往往为了方便展示详细数据,需要把一些结构树展现在树列表TreeList控件中或者下拉列表的树形控件TreeListLookUpEdit控件中,为了快速的处理数据的绑定操作,比较每次使 ... 
- python的format方法中文字符输出问题
			format方法的介绍 前言 提示:本文仅介绍format方法的使用和中文的输出向左右和居中输出问题 一.format方法的使用 format方法一般可以解决中文居中输出问题,假如我们设定宽度,当中文 ... 
- GaussDB(DWS)网络流控与管控效果
			摘要:本文主要介绍GaussDB(DWS)网络流控能力,并对其管控效果进行验证. 本文分享自华为云社区<GaussDB(DWS)网络流控与管控效果>,作者:门前一棵葡萄树. 上一篇博文Ga ... 
