Mo200909/Log-Anomaly-Detector

GitHub: Mo200909/Log-Anomaly-Detector

一个用 Java 编写的日志异常检测教学演示项目,通过多态的检测规则引擎展示面向对象编程的核心概念。

Stars: 0 | Forks: 0

# Log Anomaly Detector 这是一个 Java 项目,通过一个迷你日志分析工具演示了面向对象编程,它会根据多个独立的检测规则对日志条目进行检查,类似于 SOC(安全运营中心)标记可疑活动的方式。 ## 功能说明 根据多个独立的检测规则对一系列日志条目进行检查——包括登录失败、非工作时间访问以及来自同一 IP 的重复活动——并为每条匹配规则的日志条目输出警报。 **示例输出:** ``` 10.0.0.5 -> Failed login attempt detected 10.0.0.9 -> Access detected during Off Hours 10.0.0.2 -> Repeated activity detected from same IP ``` ## 展示的 OOP 概念 | 核心支柱 | 体现之处 | |---|---| | **封装** | `LogEntry` 中的私有字段(`ipAddress`、`eventType`、`hour`),仅通过 getter 进行访问 | | **抽象** | `Rule` 是一个抽象类,定义了两个未完成的约定——`matches()` 和 `getAlertMessage()`——每个规则类型都必须实现它们 | | **继承** | `FailedLoginRule`、`OffHoursRule` 和 `RepeatedIPRule` 分别 `extend Rule` 并实现了这两个约定方法 | | **多态** | 嵌套循环通过在一个类型为 `Rule` 的变量上调用 `matches()`/`getAlertMessage()` 来检查每一条日志条目是否符合每一个规则——Java 会在运行时解析正确的子类逻辑 | ## 设计说明 - `RepeatedIPRule` 拥有超越父类定义的自身私有状态(一个 `HashMap` 和一个 `threshold`)——子类扩展了父类的结构,而不仅仅是填补空白 - 采用嵌套循环结构,即将每一条条目对照每一条规则进行检查,而不是单次遍历 ## 项目结构 ``` LogEntry.java — holds one log record (encapsulation) Rule.java — abstract base defining the rule contract (abstraction) FailedLoginRule.java — flags FAILED_LOGIN events OffHoursRule.java — flags access outside 6am-10pm RepeatedIPRule.java — flags an IP once it repeats past a threshold MainFile.java — builds sample entries/rules, demonstrates polymorphism ``` ## 运行说明 ``` javac *.java java MainFile ``` ## 备注 独立开发并自行调试——通过直接测试发现并修复了真实的编译错误(缺少 `extends` 声明、与 `LogEntry` 的 getter 方法名不匹配、规则检查了错误字面量导致的字符串匹配 bug、嵌套方法结构错误以及缺少大括号)。
标签:JS文件枚举, 域名枚举, 教学示例, 面向对象编程