如何通过Java读取到Windows系统日志evtx文件

打印 上一主题 下一主题

主题 1784|帖子 1784|积分 5352

近日公司有个需求,需要调研如何使用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调用命令行的代码
  1. try {
  2.     String logParserPath = "D:\\Program Files (x86)\\Log Parser 2.2\\LogParser.exe";
  3.     ProcessBuilder processBuilder = new ProcessBuilder(logParserPath, "-i:EVT", "-o:csv", "SELECT * INTO D:\\output.csv FROM D:\\Security.evtx");
  4.     Process process = processBuilder.start();
  5.     process.waitFor();
  6. } catch (IOException | InterruptedException e) {
  7.     e.printStackTrace();
  8. }
复制代码
其中:D:\output.csv 为存储输出结果的文件地址,D:\Security.evtx为日志文件
2.3、 关于LogParser的一些使用文档信息

2.3.1:Log Parser的日志可以通过SQL进行查询
sql字段:
  1. EventLog(S)       RecordNumber(I)   TimeGenerated(T)
  2. TimeWritten(T)    EventID(I)        EventType(I)
  3. EventTypeName(S)  EventCategory(I)  EventCategoryName(S)
  4. SourceName(S)     Strings(S)        ComputerName(S)
  5. SID(S)            Message(S)        Data(s)
复制代码
S:String 数组
调用格式:
  1. EXTRACT_TOKEN(EventTypeName, 0, '|') )
  2.   EventTypeName:字段名
  3.   0:顺序,从0开始
  4.   |:分隔符
复制代码
T:Time。时间类
I:intger。整数类
T和I二者都是直接调用:
  1.   SELECT
  2.     TO_DATE(TimeGenerated),
  3.     RecordNumber,
  4.     TO_UPPERCASE(EXTRACT_TOKEN(EventTypeName, 0, '|')), SourceName
  5.   FROM System
复制代码
字段解析:
RecordNumber:日志记录编号从0开始
TimeGenerated:事件生成时间
TimeWritten:事件记录时间
EventID:事件ID
EventType:事件类型
Strings:字符串数组,应该对应者日志中的EventData,每个事件包含的信息应该不一样

这里只罗列了一部分字段,还有其它字段大家按需了解使用即可。
写在最后:


  • 此贴为编者自己记录所用,仅供参考
  • 写的比较乱,如有笔误,请指正
  • 未完待续

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

汕尾海湾

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表