近日公司有个需求,需要调研如何使用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文件的更多相关文章

  1. 【转】Java读取matlab的.mat数据文件

    参考:Java读取mat文件 下载链接:ujmp  jmatio 下载完两个.jar文件之后,如何引用到java项目当中?项目名称->右键->Property->Java Build ...

  2. 解决:java 读取 resources 下面的 json 文件

    前言:java 读取 工程下的配置文件,文件类型为 json(*.json),记录一下始终读取不到 json 文件的坑.maven项目 直接上工具类代码 package com.yule.compon ...

  3. java读取resource/通过文件名获取文件类型

    java读取resource java读取resource目录下文件的方法: 借助Guava库的Resource类 Resources.getResource("test.txt" ...

  4. java读取目录下所有csv文件数据,存入三维数组并返回

    package dwzx.com.get; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; ...

  5. java 读取固定目录下的文件(和上篇差点儿相同)

    package gao.org; import java.io.FileNotFoundException; import java.io.IOException; import java.io.Fi ...

  6. java读取jar包中的文件

    随手写了一个java小工具,maven打包成功后,发现工具总是读不到打在jar包中的文件信息,要读取的文件位于 /src/main/resources 目录下,打包成功后,文件就在jar包中根目录下, ...

  7. java读取package中的properties文件java.util.MissingResourceException

    文件结构: /build/classes/d914/Hello.class /build/classes/d914/mess.properties /build/classes/d914/mess_z ...

  8. Java 读取目录下的所有文件

    package util; import java.io.File; import java.util.ArrayList; import java.util.List; import org.apa ...

  9. Java 读取某个目录下所有文件、文件夹

    /** * @Author: * @Description:获取某个目录下所有直接下级文件,不包括目录下的子目录的下的文件,所以不用递归获取 * @Date: */ public static Lis ...

  10. (转) Java读取文本文件中文乱码问题

    http://blog.csdn.net/greenqingqingws/article/details/7395213 最近遇到一个问题,Java读取文本文件(例如csv文件.txt文件等),遇到中 ...

随机推荐

  1. vim使用教程(最简单最全面的教程)

    本教程是vimtutor的原版内容.这是我读过最简单最全面的vim教程. 偶仅仅是优秀内容的搬运工,放在此处便于查阅,方便学习,版权归原作者所有. 注意:每一节的命令操作将会更改本文.推荐您复制本文的 ...

  2. TypeScript必知三部曲(一)TypeScript编译方案以及IDE对TS的类型检查

    TypeScript代码的编译过程一直以来会给很多小伙伴造成困扰,typescript官方提供tsc对ts代码进行编译,babel也表示能够编译ts代码,它们二者的区别是什么?我们应该选择哪种方案?为 ...

  3. day84:luffy:优惠活动策略&用户认证&购物车商品的勾选/结算

    目录 1.课程列表页活动和真实价格计算 1.优惠活动策略的model表结构 2.课程列表页显示优惠类型名称 3.课程列表页显示真实价格 4.将优惠类型名称和真实价格显示到前端页面上 5.课程列表页显示 ...

  4. oracle删除一张表后,索引,同义词,视图,约束会被删除么

    问题描述:看到有一道题,说删除一张表之后,什么会被关联删除 进行测试,看看一张表什么会被关联删除,进行scoot下的EMP进行测试 一.创建测试需求用例 表结构: SQL> desc emp; ...

  5. xcode历史版本下载

    一.背景 较早之前做过一个项目,当时使用swift 3.x开发. 项目结束后就没再有新需求与更新. 但最近呢需要对项目的某些功能进行调整,项目又重新被拾了起来. 我们知道现在的swift 版本已经到了 ...

  6. day08-优惠券秒杀04

    功能03-优惠券秒杀04 4.功能03-优惠券秒杀 4.7Redis优化秒杀 4.7.1优化分析 现在来回顾一下优惠券秒杀业务的两个主要问题: (1)首先是对优惠券的扣减,需要防止库存超卖现象: (2 ...

  7. python自产调试工具pdb的使用

    python自产调试工具pdb的使用 介绍 调试打印在写代码的时候不可避免 项目越大,调试可能花的时间会越多 print调试可能是最早用的,一段时间内你都会习惯这种方式 一旦成了老鸟,你应该会去用ID ...

  8. Grafana 系列-统一展示-2-Prometheus 数据源

    系列文章 Grafana 系列文章 Grafana Prometheus 数据源 Grafana 提供了对 Prometheus 的内置支持.本文会介绍 Grafana Prometheus(也包括 ...

  9. #Python 缺失值的检测与处理,处理部分

  10. 2021-07-06:股票问题3。给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意:你不能同时参与多笔交易(

    2021-07-06:股票问题3.给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格.设计一个算法来计算你所能获取的最大利润.你最多可以完成 两笔 交易.注意:你不能同时参与多笔交易( ...