commit 4ffd2436ba40b60ef6f565fb21be5a8fd4137412 Author: YEYE Date: Fri Apr 3 17:43:57 2026 +0800 init commit diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..3b41682 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +/mvnw text eol=lf +*.cmd text eol=crlf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b9fcd77 --- /dev/null +++ b/.gitignore @@ -0,0 +1,35 @@ +HELP.md +target/ +.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +.env diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..c595b00 --- /dev/null +++ b/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,3 @@ +wrapperVersion=3.3.4 +distributionType=only-script +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.14/apache-maven-3.9.14-bin.zip diff --git a/documents/日志规范完善版.md b/documents/日志规范完善版.md new file mode 100644 index 0000000..c8835c8 --- /dev/null +++ b/documents/日志规范完善版.md @@ -0,0 +1,334 @@ +# 日志规范完善版 (By ChatGPT) + +> 基于现有 `日志规范说明.md` 整理,目标是把“什么时候记、谁来记、记什么、记到什么程度”说清楚,便于后续统一埋点和排查问题。 + +## 1. 文档目标 + +日志的核心目标不是“尽可能多地打印”,而是为了后续能够: + +- 快速定位问题发生在哪一层 +- 还原一次请求的完整链路 +- 区分业务异常、参数异常和系统异常 +- 追踪核心业务动作是否执行成功 +- 在网络调用、数据库调用、SDK 调用等场景下,快速确认耗时和返回状态 + +## 2. 总体原则 + +### 2.1 谁负责记录谁的日志 + +- **Controller**:负责接口入口层的访问日志和兜底异常日志 +- **Service**:负责业务里程碑日志 +- **Utils / RPC / HTTP / Redis / DB / SDK**:负责外部依赖调用的前后日志 +- **下游异常**:由下游自己记录,不在上游重复记录 + +### 2.2 日志要满足的最小信息 + +一条可用日志,至少应能回答以下问题: + +- 谁发起的:`uid`、`traceId` +- 调了什么:类名、方法名、接口 URI、目标服务名 +- 做了多久:`durationMs`、耗时统计 +- 结果如何:成功、失败、HTTP 状态码、业务状态码 +- 为什么失败:异常类型、必要的错误摘要 + +### 2.3 避免重复记录 + +当异常已经在下游被明确处理并记录时,上游不要再重复打 ERROR: + +- 下游负责记录:具体依赖失败、远程超时、数据库异常等 +- 上游负责感知:把异常继续抛出,或转换为统一业务异常 +- 上游只保留必要的上下文日志,不重复打印同一条堆栈 + +## 3. Controller 层日志规范 + +Controller 是接口入口层,重点关注“请求进来了、请求结果是什么、是否发生兜底异常”。 + +### 3.1 必须记录的内容 + +由 `@DefaultControllerLog` 统一记录: + +- 接口描述 `desc` +- 类名 `className` +- 方法名 `methodName` +- 请求 URI `uri` +- 用户标识 `uid` +- 耗时 `durationMs` +- 响应状态 `status` +- 异常类型 `exception` + +### 3.2 记录方式 + +Controller 推荐只保留一层统一切面: + +- 请求进入时开始计时 +- 方法正常返回后记录成功日志 +- 方法抛出异常后记录失败日志 +- 在 `finally` 中完成统一输出,保证无论成功失败都能落日志 + +### 3.3 Controller 的异常处理原则 + +- Controller 内部应有 **try-catch 兜底** 的意识,但不要吞掉异常 +- 如果异常来自下游服务、数据库、SDK 等,应该继续向上抛出,由对应下游层自己先记录 +- 如果是 Controller 自身拼装、参数转换、分支判断等导致的异常,可以记录兜底日志 +- 参数解析失败、JSON 反序列化失败等客户端问题,优先作为 **400 类问题** 处理,不应误报成系统故障 + +### 3.4 建议记录示例 + +- 成功请求:记录 `INFO` +- 业务异常:记录 `WARN` 或 `INFO`,视业务重要程度决定 +- 未预期异常:记录 `ERROR` + +### 3.5 当前项目中的对应实现 + +项目里已有: + +- `DefaultControllerLogAspect` +- `ControllerLogBO` +- `BusinessControllerExceptionHandler` +- `TraceContextUtil` + +这套实现已经具备 Controller 统一记录的基础,后续建议补齐: + +- `uid` 的获取逻辑 +- `traceId` / `spanId` 在日志中的统一输出 +- 对不同异常类型的日志级别区分 + +## 4. Service 层日志规范 + +Service 层是业务核心,不负责“每一步都打日志”,而是负责记录对业务有里程碑意义的节点。 + +### 4.1 应记录的场景 + +建议在以下场景记录业务日志: + +- 核心对象创建 +- 核心对象删除 +- 业务状态变化 +- 数据同步完成 +- 流程节点切换 +- 核心任务开始与结束 +- 影响用户结果的关键决策点 + +### 4.2 不建议记录的场景 + +以下情况一般不应在 Service 层重复记录: + +- 下游抛出的异常已经在下游记录过 +- 单纯的参数透传 +- 没有业务意义的中间变量变化 +- 每次循环都打印相同信息 + +### 4.3 Service 层建议关注的日志内容 + +一条好的业务日志通常包含: + +- 业务对象 ID +- 业务动作 +- 状态前后变化 +- 处理结果 +- 关键条件分支 + +示例字段: + +- `orderId` +- `userId` +- `beforeStatus` +- `afterStatus` +- `action` +- `result` + +### 4.4 异常处理原则 + +- Service 层可对业务异常做转换,但不要重复打印同一个下游异常堆栈 +- 如果 Service 自己发现业务不成立,应抛出明确的业务异常 +- 如果是资源、网络、数据库等问题,交给下游或统一异常处理层记录 + +## 5. Utils 与跨服务调用日志规范 + +Utils、RPC、HTTP Client、Redis、DB、SDK 等调用是最容易出现网络波动和性能问题的区域,因此必须前后成对记录。 + +### 5.1 调用前必须记录 + +调用发起前,应记录以下信息: + +- 目标名称:服务名、库名、SDK 名称、URL、Redis Key 前缀等 +- 请求摘要:请求参数的关键字段,避免打印敏感数据 +- 调用目的:本次调用是为了什么业务动作 +- 关联链路:`traceId`、`spanId` + +### 5.2 调用后必须记录 + +调用返回后,应记录: + +- 耗时 `durationMs` +- 返回结果摘要 +- 对方状态码或业务状态码 +- 是否超时 +- 是否重试 + +### 5.3 建议关注的日志内容 + +对于外部依赖,重点不是“全量打印响应”,而是以下信息: + +- 请求目标 +- 请求关键参数 +- 返回耗时 +- 返回状态 +- 失败原因 + +### 5.4 不应记录的内容 + +- 密码、令牌、密钥、身份证号等敏感信息 +- 过大的请求/响应全文 +- 无法脱敏的用户隐私数据 +- 已知会产生大量噪音的调试级细节 + +### 5.5 异常处理原则 + +- 下游调用失败,由下游先记录 +- 上游只做必要的异常转换或透传 +- 若需要重试,应记录每次重试的次数和最终结果 + +## 6. 日志字段建议 + +建议统一使用以下基础字段: + +- `traceId`:一次请求链路的全局标识 +- `spanId`:当前调用点标识 +- `uid`:用户标识 +- `className`:类名 +- `methodName`:方法名 +- `uri`:请求路径或目标路径 +- `durationMs`:耗时 +- `status`:HTTP 状态或调用状态 +- `exception`:异常类型或摘要 +- `desc`:业务描述 + +### 6.1 字段使用建议 + +- `traceId`:用于串联一次请求的完整链路 +- `spanId`:用于区分同一请求内的不同调用点 +- `uid`:用于追踪用户行为 +- `durationMs`:用于性能分析 +- `status`:用于快速判断结果是否成功 +- `exception`:用于快速定位失败类型 + +## 7. 日志级别建议 + +### 7.1 INFO + +适用于: + +- 请求正常完成 +- 核心业务动作成功 +- 外部调用成功且有分析价值 + +### 7.2 WARN + +适用于: + +- 客户端参数错误 +- 可预期的业务失败 +- 可恢复的下游失败 +- 需要关注但不一定影响主流程的异常 + +### 7.3 ERROR + +适用于: + +- 未预期系统异常 +- 无法恢复的故障 +- 需要立即排查的严重错误 + +## 8. 推荐的统一输出格式 + +建议日志内容尽量结构化,方便后续检索和分析。 + +示例结构: + +```text +{"traceId":"...","spanId":"...","uid":"...","className":"...","methodName":"...","uri":"...","durationMs":123,"status":"OK","exception":null,"desc":"..."} +``` + +对于外部调用,可再补充: + +- `target` +- `requestSummary` +- `responseSummary` +- `retryCount` +- `remoteCode` + +## 9. 常见误区 + +### 9.1 过度记录 + +问题表现: + +- 一个方法内打印很多行 +- 同一异常被多层重复打印 +- 每个中间步骤都记日志 + +后果: + +- 日志噪音过大 +- 关键问题被淹没 +- 排障效率下降 + +### 9.2 只记异常,不记上下文 + +问题表现: + +- 只有 `NullPointerException` +- 没有用户、接口、调用目标、耗时 + +后果: + +- 无法快速定位具体链路 + +### 9.3 打印敏感信息 + +问题表现: + +- 直接打印完整请求体 +- 直接打印密码或 token + +后果: + +- 安全风险 +- 合规风险 + +## 10. 新增接口或调用点时的检查清单 + +新增代码前,建议逐项确认: + +- [ ] 这段代码属于 Controller、Service 还是 Utils/外部调用 +- [ ] 是否已经有统一切面或统一处理器 +- [ ] 是否只记录了应该记录的那一层 +- [ ] 是否避免了重复打印下游异常 +- [ ] 是否包含 `traceId` / `spanId` +- [ ] 是否包含业务关键字段 +- [ ] 是否脱敏了敏感数据 +- [ ] 是否记录了耗时和结果状态 +- [ ] 是否对异常级别做了合理区分 + +## 11. 建议落地顺序 + +如果要逐步完善当前项目,建议按下面顺序推进: + +1. 统一 `traceId` / `spanId` 输出 +2. 补齐 `uid` 获取逻辑 +3. 完善 Controller 统一访问日志 +4. 补充 Service 业务里程碑日志 +5. 为外部调用增加前后日志模板 +6. 统一异常分类与日志级别 + +## 12. 总结 + +这份规范的核心只有三句话: + +- **Controller 记录入口和兜底异常** +- **Service 记录业务里程碑** +- **Utils / 跨服务调用记录前后摘要、耗时和状态** + +如果所有日志都遵守“谁负责谁记录、下游异常不重复记、日志只保留关键上下文”这三个原则,后续排障和审计都会轻松很多。 + diff --git a/documents/日志规范说明.md b/documents/日志规范说明.md new file mode 100644 index 0000000..be21ff5 --- /dev/null +++ b/documents/日志规范说明.md @@ -0,0 +1,19 @@ +# 记录位置 + +## Controller + +Controller使用`@DefaultControllerLog`切面统一记录访问日志, 并且实现接口大面积失效报警功能; + +需要一个 try-catch 块来捕获 Controller 内部的所有异常, 并在 catch 块中记录**兜底**异常日志, 如果是下游抛出的异常, 则交给下游记录日志; + +## Service + +Service层是业务核心, 需要在**核心对象创建/删除**, **状态变化**, **数据同步与核心流程结束**, 等具有业务里程碑意义的场景记录日志, 以便于事后追踪用户行为和系统状态; + +同样, 如果是下游抛出的异常, 则由下游处理, 不应该在 Service 层重复记录日志; + +## Utils & 跨服务调用 (RPC/HttpClient/Redis/DB/SDK) + +Utils 和跨服务调用是网络波动极其多发的灾区, 需要在**调用前切面/钩子**记录发起目的地名称和请求摘要, 在**调用返回**时必须记录耗时(ms)以及对方返回的关键状态(如 HTTP Code 或三方的业务状态码), 以便于事后追踪网络问题和性能瓶颈; + +同样, 如果是下游抛出的异常, 则由下游处理, 不应该在 Utils 层重复记录日志; \ No newline at end of file diff --git a/logs/2026-03-31/app-error.0.log b/logs/2026-03-31/app-error.0.log new file mode 100644 index 0000000..715d0ea --- /dev/null +++ b/logs/2026-03-31/app-error.0.log @@ -0,0 +1,434 @@ +{"time":"2026-03-31 16:31:56.881","level":"WARN","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext","msg":Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'businessControllerExceptionHandler' defined in file [D:\Evil.cc\LogTest1\target\classes\cc\evil\logtest1\handler\BusinessControllerExceptionHandler.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'logService' defined in file [D:\Evil.cc\LogTest1\target\classes\cc\evil\logtest1\service\log\LogService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'logPushService' defined in file [D:\Evil.cc\LogTest1\target\classes\cc\evil\logtest1\service\log\LogPushService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'mailPushService': Injection of autowired dependencies failed,"exception":""} +{"time":"2026-03-31 16:31:56.906","level":"ERROR","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.SpringApplication","msg":Application run failed,"exception":"org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'businessControllerExceptionHandler' defined in file [D:\Evil.cc\LogTest1\target\classes\cc\evil\logtest1\handler\BusinessControllerExceptionHandler.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'logService' defined in file [D:\Evil.cc\LogTest1\target\classes\cc\evil\logtest1\service\log\LogService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'logPushService' defined in file [D:\Evil.cc\LogTest1\target\classes\cc\evil\logtest1\service\log\LogPushService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'mailPushService': Injection of autowired dependencies failed + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804) + at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1395) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1228) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1194) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1130) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:990) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350) + at cc.evil.logtest1.LogTest1Application.main(LogTest1Application.java:14) +Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'logService' defined in file [D:\Evil.cc\LogTest1\target\classes\cc\evil\logtest1\service\log\LogService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'logPushService' defined in file [D:\Evil.cc\LogTest1\target\classes\cc\evil\logtest1\service\log\LogPushService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'mailPushService': Injection of autowired dependencies failed + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804) + at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1395) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1708) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1653) + at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913) + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) + ... 21 common frames omitted +Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'logPushService' defined in file [D:\Evil.cc\LogTest1\target\classes\cc\evil\logtest1\service\log\LogPushService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'mailPushService': Injection of autowired dependencies failed + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804) + at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1395) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1708) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1653) + at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913) + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) + ... 34 common frames omitted +Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mailPushService': Injection of autowired dependencies failed + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:515) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1459) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:606) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1708) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1653) + at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913) + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) + ... 47 common frames omitted +Caused by: org.springframework.util.PlaceholderResolutionException: Could not resolve placeholder 'log.push.mail.to' in value "${log.push.mail.to}" + at org.springframework.util.PlaceholderResolutionException.withValue(PlaceholderResolutionException.java:81) + at org.springframework.util.PlaceholderParser$ParsedValue.resolve(PlaceholderParser.java:298) + at org.springframework.util.PlaceholderParser.replacePlaceholders(PlaceholderParser.java:131) + at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:114) + at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:293) + at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:264) + at org.springframework.context.support.PropertySourcesPlaceholderConfigurer.lambda$processProperties$0(PropertySourcesPlaceholderConfigurer.java:186) + at org.springframework.beans.factory.support.AbstractBeanFactory.resolveEmbeddedValue(AbstractBeanFactory.java:970) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1675) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1653) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:784) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:767) + at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:146) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:509) + ... 58 common frames omitted +"} +{"time":"2026-03-31 16:35:21.137","level":"WARN","traceId":"2a57b2401411485d8019b9177c67c983","uid":"","thread":"http-nio-8080-exec-4","logger":"org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver","msg":Failure in @ExceptionHandler cc.evil.logtest1.handler.BusinessControllerExceptionHandler#handleClientException(ClientException),"exception":"java.lang.NullPointerException: Cannot invoke "java.lang.Long.longValue()" because the return value of "java.util.concurrent.ConcurrentLinkedDeque.peekFirst()" is null + at cc.evil.logtest1.service.log.LogService$FailureWindow.release(LogService.java:154) + at cc.evil.logtest1.service.log.LogService$FailureWindow.push_back(LogService.java:146) + at cc.evil.logtest1.service.log.LogService.evaluateThresholdPolicy(LogService.java:80) + at cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(LogService.java:51) + at cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleClientException(BusinessControllerExceptionHandler.java:41) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:471) + at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:73) + at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:182) + at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:80) + at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1360) + at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1161) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1106) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-03-31 16:35:21.137","level":"WARN","traceId":"0496b5c3279f4c168fe51260636332c4","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver","msg":Failure in @ExceptionHandler cc.evil.logtest1.handler.BusinessControllerExceptionHandler#handleClientException(ClientException),"exception":"java.lang.NullPointerException: Cannot read the array length because "" is null + at cc.evil.logtest1.service.log.LogPushService.stackTraceToString(LogPushService.java:35) + at cc.evil.logtest1.service.log.LogPushService.push(LogPushService.java:29) + at cc.evil.logtest1.service.log.LogService.evaluateThresholdPolicy(LogService.java:83) + at cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(LogService.java:51) + at cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleClientException(BusinessControllerExceptionHandler.java:41) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:471) + at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:73) + at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:182) + at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:80) + at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1360) + at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1161) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1106) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-03-31 16:35:21.144","level":"ERROR","traceId":"","uid":"","thread":"http-nio-8080-exec-4","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet]","msg":Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: cc.evil.logtest1.exception.ClientException: 未授权访问] with root cause,"exception":"cc.evil.logtest1.exception.ClientException: 未授权访问 + at cc.evil.logtest1.controller.TestController.testNormalException(TestController.java:36) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at cc.evil.logtest1.controller.TestController$$SpringCGLIB$$0.testNormalException() + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-03-31 16:35:21.145","level":"ERROR","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet]","msg":Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: cc.evil.logtest1.exception.ClientException: 未授权访问] with root cause,"exception":"cc.evil.logtest1.exception.ClientException: 未授权访问 + at cc.evil.logtest1.controller.TestController.testNormalException(TestController.java:36) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at cc.evil.logtest1.controller.TestController$$SpringCGLIB$$0.testNormalException() + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-03-31 16:40:51.182","level":"ERROR","traceId":"057234bb1a6b471094c51620400b2bd7","uid":"","thread":"trace-exec-4","logger":"org.springframework.aop.interceptor.SimpleAsyncUncaughtExceptionHandler","msg":Unexpected exception occurred invoking async method: public void cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(cc.evil.logtest1.exception.EvilBaseException),"exception":"java.lang.NullPointerException: Cannot invoke "java.lang.Long.longValue()" because the return value of "java.util.concurrent.ConcurrentLinkedDeque.peekFirst()" is null + at cc.evil.logtest1.service.log.LogService$FailureWindow.release(LogService.java:157) + at cc.evil.logtest1.service.log.LogService$FailureWindow.push_back(LogService.java:149) + at cc.evil.logtest1.service.log.LogService.evaluateThresholdPolicy(LogService.java:83) + at cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(LogService.java:53) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:114) + at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:317) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java) + at cc.evil.logtest1.config.AsyncConfig.lambda$traceableExecutor$0(AsyncConfig.java:34) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-03-31 16:45:42.013","level":"ERROR","traceId":"02cfc3affc7f4ec0b4db470bd403356c","uid":"","thread":"trace-exec-1","logger":"org.springframework.aop.interceptor.SimpleAsyncUncaughtExceptionHandler","msg":Unexpected exception occurred invoking async method: public void cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(cc.evil.logtest1.exception.EvilBaseException),"exception":"org.springframework.mail.MailSendException: Failed messages: jakarta.mail.SendFailedException: No recipient addresses; message exceptions (1) are: +Failed message 1: jakarta.mail.SendFailedException: No recipient addresses + at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:453) + at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:317) + at org.springframework.mail.MailSender.send(MailSender.java:42) + at cc.evil.logtest1.service.log.MailPushService.pushToAll(MailPushService.java:32) + at cc.evil.logtest1.service.log.LogPushService.push(LogPushService.java:30) + at cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(LogService.java:49) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:114) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at cc.evil.logtest1.config.AsyncConfig.lambda$traceableExecutor$0(AsyncConfig.java:34) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-03-31 17:47:53.992","level":"ERROR","traceId":"","uid":"","thread":"scheduling-1","logger":"org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler","msg":Unexpected error occurred in scheduled task,"exception":"java.lang.NullPointerException: Cannot invoke "java.lang.Long.longValue()" because the return value of "java.util.concurrent.ConcurrentLinkedDeque.peekFirst()" is null + at cc.evil.logtest1.service.log.LogService$FailureWindow.release(LogService.java:154) + at cc.evil.logtest1.service.log.LogService.lambda$cleanupIdleWindows$1(LogService.java:102) + at java.base/java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1603) + at cc.evil.logtest1.service.log.LogService.cleanupIdleWindows(LogService.java:101) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at cc.evil.logtest1.service.log.LogService$$SpringCGLIB$$0.cleanupIdleWindows() + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) + at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) + at io.micrometer.observation.Observation.observe(Observation.java:498) + at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) + at org.springframework.scheduling.config.Task$OutcomeTrackingRunnable.run(Task.java:87) + at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.runAndReset$$$capture(FutureTask.java:358) + at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-03-31 17:47:54.986","level":"ERROR","traceId":"10f1707cf8f44670bd621a9a1bfccc55","uid":"","thread":"trace-exec-2","logger":"org.springframework.aop.interceptor.SimpleAsyncUncaughtExceptionHandler","msg":Unexpected exception occurred invoking async method: public void cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(cc.evil.logtest1.exception.EvilBaseException),"exception":"java.lang.NullPointerException: Cannot invoke "java.lang.Long.longValue()" because the return value of "java.util.concurrent.ConcurrentLinkedDeque.peekFirst()" is null + at cc.evil.logtest1.service.log.LogService$FailureWindow.release(LogService.java:154) + at cc.evil.logtest1.service.log.LogService$FailureWindow.push_back(LogService.java:146) + at cc.evil.logtest1.service.log.LogService.evaluateThresholdPolicy(LogService.java:85) + at cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(LogService.java:53) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:114) + at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:317) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java) + at cc.evil.logtest1.config.AsyncConfig.lambda$traceableExecutor$0(AsyncConfig.java:34) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-03-31 17:56:56.090","level":"ERROR","traceId":"f41acda7730c4bbfb969dffccc29d7ef","uid":"","thread":"trace-exec-5","logger":"org.springframework.aop.interceptor.SimpleAsyncUncaughtExceptionHandler","msg":Unexpected exception occurred invoking async method: public void cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(cc.evil.logtest1.exception.EvilBaseException),"exception":"java.lang.NullPointerException: Cannot read the array length because "" is null + at cc.evil.logtest1.service.log.LogPushService.stackTraceToString(LogPushService.java:35) + at cc.evil.logtest1.service.log.LogPushService.push(LogPushService.java:29) + at cc.evil.logtest1.service.log.LogService.evaluateThresholdPolicy(LogService.java:90) + at cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(LogService.java:53) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:114) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at cc.evil.logtest1.config.AsyncConfig.lambda$traceableExecutor$0(AsyncConfig.java:34) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} diff --git a/logs/2026-03-31/app-info.0.log b/logs/2026-03-31/app-info.0.log new file mode 100644 index 0000000..8e10347 --- /dev/null +++ b/logs/2026-03-31/app-info.0.log @@ -0,0 +1,677 @@ +{"time":"2026-03-31 14:38:17.866","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":Starting LogTest1ApplicationTests using Java 21.0.3 with PID 45964 (started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 14:38:17.867","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 14:38:19.255","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":Started LogTest1ApplicationTests in 1.769 seconds (process running for 2.586),"exception":""} +{"time":"2026-03-31 14:47:21.502","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":Starting LogTest1ApplicationTests using Java 21.0.3 with PID 43576 (started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 14:47:21.503","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 14:47:22.862","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":Started LogTest1ApplicationTests in 1.661 seconds (process running for 2.335),"exception":""} +{"time":"2026-03-31 15:50:43.267","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":Starting LogTest1ApplicationTests using Java 21.0.3 with PID 50404 (started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 15:50:43.268","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 15:50:44.823","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":Started LogTest1ApplicationTests in 2.016 seconds (process running for 3.01),"exception":""} +{"time":"2026-03-31 15:53:07.115","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":Starting LogTest1ApplicationTests using Java 21.0.3 with PID 41924 (started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 15:53:07.116","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 15:53:08.409","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":Started LogTest1ApplicationTests in 1.635 seconds (process running for 2.444),"exception":""} +{"time":"2026-03-31 15:56:21.270","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":Starting LogTest1ApplicationTests using Java 21.0.3 with PID 50548 (started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 15:56:21.271","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 15:56:22.559","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":Started LogTest1ApplicationTests in 1.607 seconds (process running for 2.42),"exception":""} +{"time":"2026-03-31 16:04:09.932","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":Starting LogTest1ApplicationTests using Java 21.0.3 with PID 46504 (started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 16:04:09.933","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 16:04:11.343","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":Started LogTest1ApplicationTests in 1.822 seconds (process running for 2.745),"exception":""} +{"time":"2026-03-31 16:31:55.796","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 50420 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 16:31:55.797","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 16:31:56.713","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-03-31 16:31:56.723","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 16:31:56.724","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-03-31 16:31:56.724","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-03-31 16:31:56.772","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-03-31 16:31:56.772","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 940 ms,"exception":""} +{"time":"2026-03-31 16:31:56.881","level":"WARN","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext","msg":Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'businessControllerExceptionHandler' defined in file [D:\Evil.cc\LogTest1\target\classes\cc\evil\logtest1\handler\BusinessControllerExceptionHandler.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'logService' defined in file [D:\Evil.cc\LogTest1\target\classes\cc\evil\logtest1\service\log\LogService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'logPushService' defined in file [D:\Evil.cc\LogTest1\target\classes\cc\evil\logtest1\service\log\LogPushService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'mailPushService': Injection of autowired dependencies failed,"exception":""} +{"time":"2026-03-31 16:31:56.883","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Stopping service [Tomcat],"exception":""} +{"time":"2026-03-31 16:31:56.891","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLogger","msg": + +Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.,"exception":""} +{"time":"2026-03-31 16:31:56.906","level":"ERROR","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.SpringApplication","msg":Application run failed,"exception":"org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'businessControllerExceptionHandler' defined in file [D:\Evil.cc\LogTest1\target\classes\cc\evil\logtest1\handler\BusinessControllerExceptionHandler.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'logService' defined in file [D:\Evil.cc\LogTest1\target\classes\cc\evil\logtest1\service\log\LogService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'logPushService' defined in file [D:\Evil.cc\LogTest1\target\classes\cc\evil\logtest1\service\log\LogPushService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'mailPushService': Injection of autowired dependencies failed + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804) + at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1395) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1228) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1194) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1130) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:990) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350) + at cc.evil.logtest1.LogTest1Application.main(LogTest1Application.java:14) +Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'logService' defined in file [D:\Evil.cc\LogTest1\target\classes\cc\evil\logtest1\service\log\LogService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'logPushService' defined in file [D:\Evil.cc\LogTest1\target\classes\cc\evil\logtest1\service\log\LogPushService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'mailPushService': Injection of autowired dependencies failed + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804) + at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1395) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1708) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1653) + at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913) + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) + ... 21 common frames omitted +Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'logPushService' defined in file [D:\Evil.cc\LogTest1\target\classes\cc\evil\logtest1\service\log\LogPushService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'mailPushService': Injection of autowired dependencies failed + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804) + at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1395) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1708) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1653) + at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913) + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) + ... 34 common frames omitted +Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mailPushService': Injection of autowired dependencies failed + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:515) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1459) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:606) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1708) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1653) + at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913) + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) + ... 47 common frames omitted +Caused by: org.springframework.util.PlaceholderResolutionException: Could not resolve placeholder 'log.push.mail.to' in value "${log.push.mail.to}" + at org.springframework.util.PlaceholderResolutionException.withValue(PlaceholderResolutionException.java:81) + at org.springframework.util.PlaceholderParser$ParsedValue.resolve(PlaceholderParser.java:298) + at org.springframework.util.PlaceholderParser.replacePlaceholders(PlaceholderParser.java:131) + at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:114) + at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:293) + at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:264) + at org.springframework.context.support.PropertySourcesPlaceholderConfigurer.lambda$processProperties$0(PropertySourcesPlaceholderConfigurer.java:186) + at org.springframework.beans.factory.support.AbstractBeanFactory.resolveEmbeddedValue(AbstractBeanFactory.java:970) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1675) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1653) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:784) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:767) + at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:146) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:509) + ... 58 common frames omitted +"} +{"time":"2026-03-31 16:33:43.492","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 51016 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 16:33:43.493","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 16:33:44.187","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-03-31 16:33:44.194","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 16:33:44.195","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-03-31 16:33:44.195","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-03-31 16:33:44.225","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-03-31 16:33:44.225","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 705 ms,"exception":""} +{"time":"2026-03-31 16:33:44.615","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 16:33:44.631","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-03-31 16:33:44.638","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.527 seconds (process running for 1.876),"exception":""} +{"time":"2026-03-31 16:34:17.520","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 16:34:17.520","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 16:34:17.521","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 1 ms,"exception":""} +{"time":"2026-03-31 16:35:21.137","level":"WARN","traceId":"2a57b2401411485d8019b9177c67c983","uid":"","thread":"http-nio-8080-exec-4","logger":"org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver","msg":Failure in @ExceptionHandler cc.evil.logtest1.handler.BusinessControllerExceptionHandler#handleClientException(ClientException),"exception":"java.lang.NullPointerException: Cannot invoke "java.lang.Long.longValue()" because the return value of "java.util.concurrent.ConcurrentLinkedDeque.peekFirst()" is null + at cc.evil.logtest1.service.log.LogService$FailureWindow.release(LogService.java:154) + at cc.evil.logtest1.service.log.LogService$FailureWindow.push_back(LogService.java:146) + at cc.evil.logtest1.service.log.LogService.evaluateThresholdPolicy(LogService.java:80) + at cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(LogService.java:51) + at cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleClientException(BusinessControllerExceptionHandler.java:41) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:471) + at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:73) + at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:182) + at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:80) + at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1360) + at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1161) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1106) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-03-31 16:35:21.137","level":"WARN","traceId":"0496b5c3279f4c168fe51260636332c4","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver","msg":Failure in @ExceptionHandler cc.evil.logtest1.handler.BusinessControllerExceptionHandler#handleClientException(ClientException),"exception":"java.lang.NullPointerException: Cannot read the array length because "" is null + at cc.evil.logtest1.service.log.LogPushService.stackTraceToString(LogPushService.java:35) + at cc.evil.logtest1.service.log.LogPushService.push(LogPushService.java:29) + at cc.evil.logtest1.service.log.LogService.evaluateThresholdPolicy(LogService.java:83) + at cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(LogService.java:51) + at cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleClientException(BusinessControllerExceptionHandler.java:41) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:471) + at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:73) + at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:182) + at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:80) + at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1360) + at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1161) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1106) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-03-31 16:35:21.144","level":"ERROR","traceId":"","uid":"","thread":"http-nio-8080-exec-4","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet]","msg":Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: cc.evil.logtest1.exception.ClientException: 未授权访问] with root cause,"exception":"cc.evil.logtest1.exception.ClientException: 未授权访问 + at cc.evil.logtest1.controller.TestController.testNormalException(TestController.java:36) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at cc.evil.logtest1.controller.TestController$$SpringCGLIB$$0.testNormalException() + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-03-31 16:35:21.145","level":"ERROR","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet]","msg":Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: cc.evil.logtest1.exception.ClientException: 未授权访问] with root cause,"exception":"cc.evil.logtest1.exception.ClientException: 未授权访问 + at cc.evil.logtest1.controller.TestController.testNormalException(TestController.java:36) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at cc.evil.logtest1.controller.TestController$$SpringCGLIB$$0.testNormalException() + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-03-31 16:37:38.941","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-03-31 16:37:48.867","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 52044 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 16:37:48.868","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 16:37:49.607","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-03-31 16:37:49.619","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 16:37:49.620","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-03-31 16:37:49.620","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-03-31 16:37:49.674","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-03-31 16:37:49.674","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 777 ms,"exception":""} +{"time":"2026-03-31 16:37:49.997","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 16:37:50.011","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-03-31 16:37:50.016","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.55 seconds (process running for 1.949),"exception":""} +{"time":"2026-03-31 16:37:55.949","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-7","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 16:37:55.949","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-7","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 16:37:55.950","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-7","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 0 ms,"exception":""} +{"time":"2026-03-31 16:38:41.669","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-03-31 16:38:41.677","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-03-31 16:38:54.143","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 51516 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 16:38:54.144","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 16:38:54.881","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-03-31 16:38:54.891","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 16:38:54.892","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-03-31 16:38:54.893","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-03-31 16:38:54.933","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-03-31 16:38:54.933","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 754 ms,"exception":""} +{"time":"2026-03-31 16:38:55.269","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 16:38:55.283","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-03-31 16:38:55.295","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.63 seconds (process running for 2.515),"exception":""} +{"time":"2026-03-31 16:39:03.257","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 16:39:03.257","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 16:39:03.258","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 0 ms,"exception":""} +{"time":"2026-03-31 16:40:51.182","level":"ERROR","traceId":"057234bb1a6b471094c51620400b2bd7","uid":"","thread":"trace-exec-4","logger":"org.springframework.aop.interceptor.SimpleAsyncUncaughtExceptionHandler","msg":Unexpected exception occurred invoking async method: public void cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(cc.evil.logtest1.exception.EvilBaseException),"exception":"java.lang.NullPointerException: Cannot invoke "java.lang.Long.longValue()" because the return value of "java.util.concurrent.ConcurrentLinkedDeque.peekFirst()" is null + at cc.evil.logtest1.service.log.LogService$FailureWindow.release(LogService.java:157) + at cc.evil.logtest1.service.log.LogService$FailureWindow.push_back(LogService.java:149) + at cc.evil.logtest1.service.log.LogService.evaluateThresholdPolicy(LogService.java:83) + at cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(LogService.java:53) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:114) + at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:317) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java) + at cc.evil.logtest1.config.AsyncConfig.lambda$traceableExecutor$0(AsyncConfig.java:34) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-03-31 16:42:49.556","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-03-31 16:42:49.569","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-03-31 16:43:02.801","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 52368 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 16:43:02.802","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 16:43:03.537","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-03-31 16:43:03.546","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 16:43:03.547","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-03-31 16:43:03.547","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-03-31 16:43:03.581","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-03-31 16:43:03.581","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 748 ms,"exception":""} +{"time":"2026-03-31 16:43:03.913","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 16:43:03.926","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-03-31 16:43:03.932","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.569 seconds (process running for 2.128),"exception":""} +{"time":"2026-03-31 16:43:08.452","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 16:43:08.452","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 16:43:08.454","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 2 ms,"exception":""} +{"time":"2026-03-31 16:43:47.835","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-03-31 16:43:47.845","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-03-31 16:45:34.983","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 45428 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 16:45:34.984","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 16:45:35.596","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-03-31 16:45:35.604","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 16:45:35.605","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-03-31 16:45:35.605","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-03-31 16:45:35.634","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-03-31 16:45:35.634","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 623 ms,"exception":""} +{"time":"2026-03-31 16:45:35.911","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 16:45:35.922","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-03-31 16:45:35.927","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.297 seconds (process running for 1.613),"exception":""} +{"time":"2026-03-31 16:45:41.299","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 16:45:41.299","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 16:45:41.300","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 1 ms,"exception":""} +{"time":"2026-03-31 16:45:42.013","level":"ERROR","traceId":"02cfc3affc7f4ec0b4db470bd403356c","uid":"","thread":"trace-exec-1","logger":"org.springframework.aop.interceptor.SimpleAsyncUncaughtExceptionHandler","msg":Unexpected exception occurred invoking async method: public void cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(cc.evil.logtest1.exception.EvilBaseException),"exception":"org.springframework.mail.MailSendException: Failed messages: jakarta.mail.SendFailedException: No recipient addresses; message exceptions (1) are: +Failed message 1: jakarta.mail.SendFailedException: No recipient addresses + at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:453) + at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:317) + at org.springframework.mail.MailSender.send(MailSender.java:42) + at cc.evil.logtest1.service.log.MailPushService.pushToAll(MailPushService.java:32) + at cc.evil.logtest1.service.log.LogPushService.push(LogPushService.java:30) + at cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(LogService.java:49) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:114) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at cc.evil.logtest1.config.AsyncConfig.lambda$traceableExecutor$0(AsyncConfig.java:34) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-03-31 16:46:22.784","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-03-31 16:46:22.789","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-03-31 16:46:26.416","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 47860 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 16:46:26.417","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 16:46:27.065","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-03-31 16:46:27.072","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 16:46:27.074","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-03-31 16:46:27.074","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-03-31 16:46:27.105","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-03-31 16:46:27.106","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 664 ms,"exception":""} +{"time":"2026-03-31 16:46:27.404","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 16:46:27.416","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-03-31 16:46:27.421","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.364 seconds (process running for 1.678),"exception":""} +{"time":"2026-03-31 16:46:30.314","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 16:46:30.315","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 16:46:30.316","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 1 ms,"exception":""} +{"time":"2026-03-31 17:13:18.543","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-03-31 17:13:18.551","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-03-31 17:19:36.567","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 53768 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 17:19:36.567","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 17:19:37.307","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-03-31 17:19:37.317","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 17:19:37.318","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-03-31 17:19:37.319","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-03-31 17:19:37.373","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-03-31 17:19:37.373","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 779 ms,"exception":""} +{"time":"2026-03-31 17:19:37.699","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 17:19:37.718","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-03-31 17:19:37.724","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.566 seconds (process running for 2.068),"exception":""} +{"time":"2026-03-31 17:40:08.330","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-03-31 17:40:08.339","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-03-31 17:40:14.381","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 53524 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 17:40:14.382","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 17:40:15.156","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-03-31 17:40:15.169","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 17:40:15.170","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-03-31 17:40:15.170","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-03-31 17:40:15.210","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-03-31 17:40:15.210","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 795 ms,"exception":""} +{"time":"2026-03-31 17:40:15.515","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 17:40:15.528","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-03-31 17:40:15.533","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.58 seconds (process running for 2.005),"exception":""} +{"time":"2026-03-31 17:40:20.248","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 17:40:20.248","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 17:40:20.248","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 0 ms,"exception":""} +{"time":"2026-03-31 17:40:20.274","level":"INFO","traceId":"57e2e79407a34af88bdf2733877883da","uid":"","thread":"trace-exec-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Push now because setting in exception pushed log for exception: cc.evil.logtest1.exception.ClientException, ruleKey: cc.evil.logtest1.controller.TestController#testNormalException.,"exception":""} +{"time":"2026-03-31 17:40:21.458","level":"INFO","traceId":"57e2e79407a34af88bdf2733877883da","uid":"","thread":"trace-exec-1","logger":"cc.evil.logtest1.service.log.MailPushService","msg":Successfully sent log email to 2207086349@qq.com.,"exception":""} +{"time":"2026-03-31 17:43:11.586","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-03-31 17:43:11.598","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-03-31 17:43:19.925","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 54216 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 17:43:19.926","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 17:43:20.895","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-03-31 17:43:20.908","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 17:43:20.910","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-03-31 17:43:20.910","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-03-31 17:43:20.955","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-03-31 17:43:20.956","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 994 ms,"exception":""} +{"time":"2026-03-31 17:43:21.351","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 17:43:21.364","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-03-31 17:43:21.372","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.973 seconds (process running for 2.622),"exception":""} +{"time":"2026-03-31 17:43:23.803","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 17:43:23.803","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 17:43:23.804","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 1 ms,"exception":""} +{"time":"2026-03-31 17:43:43.419","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-03-31 17:43:43.430","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-03-31 17:43:56.982","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 47560 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 17:43:56.983","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 17:43:57.695","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-03-31 17:43:57.703","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 17:43:57.704","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-03-31 17:43:57.705","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-03-31 17:43:57.736","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-03-31 17:43:57.736","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 718 ms,"exception":""} +{"time":"2026-03-31 17:43:58.038","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 17:43:58.050","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-03-31 17:43:58.055","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.534 seconds (process running for 1.95),"exception":""} +{"time":"2026-03-31 17:44:01.072","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 17:44:01.073","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 17:44:01.074","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 1 ms,"exception":""} +{"time":"2026-03-31 17:44:49.635","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-03-31 17:44:49.647","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-03-31 17:44:52.897","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 44484 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 17:44:52.898","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 17:44:53.737","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-03-31 17:44:53.747","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 17:44:53.748","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-03-31 17:44:53.748","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-03-31 17:44:53.789","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-03-31 17:44:53.789","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 862 ms,"exception":""} +{"time":"2026-03-31 17:44:54.147","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 17:44:54.159","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-03-31 17:44:54.165","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.725 seconds (process running for 2.242),"exception":""} +{"time":"2026-03-31 17:44:58.145","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 17:44:58.145","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 17:44:58.146","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 1 ms,"exception":""} +{"time":"2026-03-31 17:47:53.992","level":"ERROR","traceId":"","uid":"","thread":"scheduling-1","logger":"org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler","msg":Unexpected error occurred in scheduled task,"exception":"java.lang.NullPointerException: Cannot invoke "java.lang.Long.longValue()" because the return value of "java.util.concurrent.ConcurrentLinkedDeque.peekFirst()" is null + at cc.evil.logtest1.service.log.LogService$FailureWindow.release(LogService.java:154) + at cc.evil.logtest1.service.log.LogService.lambda$cleanupIdleWindows$1(LogService.java:102) + at java.base/java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1603) + at cc.evil.logtest1.service.log.LogService.cleanupIdleWindows(LogService.java:101) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at cc.evil.logtest1.service.log.LogService$$SpringCGLIB$$0.cleanupIdleWindows() + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) + at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) + at io.micrometer.observation.Observation.observe(Observation.java:498) + at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) + at org.springframework.scheduling.config.Task$OutcomeTrackingRunnable.run(Task.java:87) + at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.runAndReset$$$capture(FutureTask.java:358) + at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-03-31 17:47:54.986","level":"ERROR","traceId":"10f1707cf8f44670bd621a9a1bfccc55","uid":"","thread":"trace-exec-2","logger":"org.springframework.aop.interceptor.SimpleAsyncUncaughtExceptionHandler","msg":Unexpected exception occurred invoking async method: public void cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(cc.evil.logtest1.exception.EvilBaseException),"exception":"java.lang.NullPointerException: Cannot invoke "java.lang.Long.longValue()" because the return value of "java.util.concurrent.ConcurrentLinkedDeque.peekFirst()" is null + at cc.evil.logtest1.service.log.LogService$FailureWindow.release(LogService.java:154) + at cc.evil.logtest1.service.log.LogService$FailureWindow.push_back(LogService.java:146) + at cc.evil.logtest1.service.log.LogService.evaluateThresholdPolicy(LogService.java:85) + at cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(LogService.java:53) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:114) + at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:317) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java) + at cc.evil.logtest1.config.AsyncConfig.lambda$traceableExecutor$0(AsyncConfig.java:34) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-03-31 17:56:45.115","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-03-31 17:56:45.122","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-03-31 17:56:50.205","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 45240 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 17:56:50.205","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 17:56:50.855","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-03-31 17:56:50.864","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 17:56:50.865","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-03-31 17:56:50.865","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-03-31 17:56:50.899","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-03-31 17:56:50.899","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 663 ms,"exception":""} +{"time":"2026-03-31 17:56:51.193","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 17:56:51.204","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-03-31 17:56:51.209","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.381 seconds (process running for 1.733),"exception":""} +{"time":"2026-03-31 17:56:52.949","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 17:56:52.949","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 17:56:52.950","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 1 ms,"exception":""} +{"time":"2026-03-31 17:56:56.088","level":"INFO","traceId":"f41acda7730c4bbfb969dffccc29d7ef","uid":"","thread":"trace-exec-5","logger":"cc.evil.logtest1.service.log.LogService","msg":Push because threshold reached for exception: cc.evil.logtest1.exception.InternalServerException, ruleKey: cc.evil.logtest1.controller.TestController#testNormalException1, cnt: 5.,"exception":""} +{"time":"2026-03-31 17:56:56.090","level":"ERROR","traceId":"f41acda7730c4bbfb969dffccc29d7ef","uid":"","thread":"trace-exec-5","logger":"org.springframework.aop.interceptor.SimpleAsyncUncaughtExceptionHandler","msg":Unexpected exception occurred invoking async method: public void cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(cc.evil.logtest1.exception.EvilBaseException),"exception":"java.lang.NullPointerException: Cannot read the array length because "" is null + at cc.evil.logtest1.service.log.LogPushService.stackTraceToString(LogPushService.java:35) + at cc.evil.logtest1.service.log.LogPushService.push(LogPushService.java:29) + at cc.evil.logtest1.service.log.LogService.evaluateThresholdPolicy(LogService.java:90) + at cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(LogService.java:53) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:114) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at cc.evil.logtest1.config.AsyncConfig.lambda$traceableExecutor$0(AsyncConfig.java:34) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-03-31 17:57:51.223","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Remove idle window for ruleKey: cc.evil.logtest1.controller.TestController#testNormalException1, because cleanup schedule.,"exception":""} +{"time":"2026-03-31 17:58:11.570","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-03-31 17:58:11.575","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-03-31 17:58:15.134","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 54892 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 17:58:15.134","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 17:58:15.823","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-03-31 17:58:15.832","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 17:58:15.833","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-03-31 17:58:15.834","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-03-31 17:58:15.865","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-03-31 17:58:15.866","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 703 ms,"exception":""} +{"time":"2026-03-31 17:58:16.183","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-03-31 17:58:16.195","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-03-31 17:58:16.200","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.445 seconds (process running for 1.78),"exception":""} +{"time":"2026-03-31 17:58:22.791","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 17:58:22.791","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-03-31 17:58:22.791","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 0 ms,"exception":""} +{"time":"2026-03-31 17:58:25.568","level":"INFO","traceId":"1505ae3f6ed849958b3641ff31c4e206","uid":"","thread":"trace-exec-5","logger":"cc.evil.logtest1.service.log.LogService","msg":Push because threshold reached for exception: cc.evil.logtest1.exception.InternalServerException, ruleKey: cc.evil.logtest1.controller.TestController#testNormalException1, cnt: 5.,"exception":""} +{"time":"2026-03-31 17:58:26.539","level":"INFO","traceId":"1505ae3f6ed849958b3641ff31c4e206","uid":"","thread":"trace-exec-5","logger":"cc.evil.logtest1.service.log.MailPushService","msg":Successfully sent log email to 2207086349@qq.com.,"exception":""} +{"time":"2026-03-31 18:04:11.560","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-03-31 18:04:11.566","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-03-31 21:12:52.035","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":Starting LogTest1ApplicationTests using Java 21.0.3 with PID 38364 (started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-03-31 21:12:52.037","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-03-31 21:12:53.539","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1ApplicationTests","msg":Started LogTest1ApplicationTests in 1.917 seconds (process running for 2.735),"exception":""} diff --git a/logs/2026-04-01/app-info.0.log b/logs/2026-04-01/app-info.0.log new file mode 100644 index 0000000..be7d164 --- /dev/null +++ b/logs/2026-04-01/app-info.0.log @@ -0,0 +1,1527 @@ +{"time":"2026-04-01 00:46:26.169","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 58624 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-04-01 00:46:26.171","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-01 00:46:27.106","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-01 00:46:27.119","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 00:46:27.122","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-01 00:46:27.122","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-01 00:46:27.192","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-01 00:46:27.193","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 980 ms,"exception":""} +{"time":"2026-04-01 00:46:27.557","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 00:46:27.583","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-04-01 00:46:27.588","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.944 seconds (process running for 2.197),"exception":""} +{"time":"2026-04-01 00:47:08.130","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 00:47:08.130","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 00:47:08.131","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 1 ms,"exception":""} +{"time":"2026-04-01 17:19:31.131","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 29188 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-04-01 17:19:31.132","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-01 17:19:32.089","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-01 17:19:32.100","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 17:19:32.101","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-01 17:19:32.101","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-01 17:19:32.148","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-01 17:19:32.149","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 983 ms,"exception":""} +{"time":"2026-04-01 17:19:32.560","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 17:19:32.577","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-04-01 17:19:32.584","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.996 seconds (process running for 2.544),"exception":""} +{"time":"2026-04-01 17:20:31.548","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-4","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 17:20:31.548","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-4","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 17:20:31.549","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-4","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 1 ms,"exception":""} +{"time":"2026-04-01 17:20:31.580","level":"ERROR","traceId":"317a8ebcc7624f778e042318bd16dae5","uid":"","thread":"http-nio-8080-exec-4","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":Unexpected exception caught: ,"exception":"org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'startTime' for method parameter type String is not present + at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.handleMissingValueInternal(RequestParamMethodArgumentResolver.java:220) + at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.handleMissingValue(RequestParamMethodArgumentResolver.java:196) + at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:125) + at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122) + at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:227) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:181) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:20:31.585","level":"INFO","traceId":"317a8ebcc7624f778e042318bd16dae5","uid":"","thread":"trace-exec-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Push now for unexpected error pushed log for exception: org.springframework.web.bind.MissingServletRequestParameterException, ruleKey: cc.evil.logtest1.filters.TraceIdFilter#doFilter.,"exception":""} +{"time":"2026-04-01 17:20:32.862","level":"INFO","traceId":"317a8ebcc7624f778e042318bd16dae5","uid":"","thread":"trace-exec-1","logger":"cc.evil.logtest1.service.log.MailPushService","msg":Successfully sent log email to 2207086349@qq.com.,"exception":""} +{"time":"2026-04-01 17:22:34.371","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-04-01 17:22:34.377","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-04-01 17:22:37.547","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 48140 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-04-01 17:22:37.547","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-01 17:22:38.256","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-01 17:22:38.268","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 17:22:38.268","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-01 17:22:38.268","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-01 17:22:38.310","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-01 17:22:38.310","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 733 ms,"exception":""} +{"time":"2026-04-01 17:22:38.609","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 17:22:38.620","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-04-01 17:22:38.625","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.529 seconds (process running for 2.015),"exception":""} +{"time":"2026-04-01 17:22:42.163","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 17:22:42.163","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 17:22:42.163","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 0 ms,"exception":""} +{"time":"2026-04-01 17:22:42.189","level":"INFO","traceId":"72f09215369f4d2796c9e512399d51cb","uid":"","thread":"http-nio-8080-exec-1","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载所有日志文件名,"exception":""} +{"time":"2026-04-01 17:23:14.064","level":"INFO","traceId":"8804ea26739049f7bd69c296303c55ed","uid":"","thread":"http-nio-8080-exec-7","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载所有日志文件名,"exception":""} +{"time":"2026-04-01 17:23:48.927","level":"INFO","traceId":"d591c2c6db9c4faea06f07f7d55001e8","uid":"","thread":"http-nio-8080-exec-5","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载所有日志文件名,"exception":""} +{"time":"2026-04-01 17:24:06.158","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-04-01 17:24:06.164","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-04-01 17:24:09.733","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 48184 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-04-01 17:24:09.736","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-01 17:24:10.441","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-01 17:24:10.450","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 17:24:10.451","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-01 17:24:10.451","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-01 17:24:10.485","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-01 17:24:10.486","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 715 ms,"exception":""} +{"time":"2026-04-01 17:24:10.824","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 17:24:10.837","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-04-01 17:24:10.845","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.549 seconds (process running for 2.412),"exception":""} +{"time":"2026-04-01 17:24:13.852","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 17:24:13.852","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 17:24:13.853","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 1 ms,"exception":""} +{"time":"2026-04-01 17:24:49.032","level":"INFO","traceId":"b9bb503d668045d697888a3afb1cf585","uid":"","thread":"http-nio-8080-exec-2","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载所有日志文件名,"exception":""} +{"time":"2026-04-01 17:26:13.552","level":"INFO","traceId":"18317ece56454d45a353cc1fd1d54ae3","uid":"","thread":"http-nio-8080-exec-5","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载所有日志文件名,"exception":""} +{"time":"2026-04-01 17:26:29.960","level":"INFO","traceId":"ef04ea84f9c14b53b60f0b4dd3c28ad8","uid":"","thread":"http-nio-8080-exec-4","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载所有日志文件名,"exception":""} +{"time":"2026-04-01 17:26:37.812","level":"ERROR","traceId":"6b45c4c665cd426980a3e8968568e8a9","uid":"","thread":"http-nio-8080-exec-3","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":Unexpected exception caught: ,"exception":"cc.evil.logtest1.exception.EvilBaseException: 时间逻辑错误 + at cc.evil.logtest1.controller.logger.LogsController.getLogsFiles(LogsController.java:44) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:26:37.823","level":"ERROR","traceId":"6b45c4c665cd426980a3e8968568e8a9","uid":"","thread":"trace-exec-1","logger":"org.springframework.aop.interceptor.SimpleAsyncUncaughtExceptionHandler","msg":Unexpected exception occurred invoking async method: public void cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(java.lang.Exception),"exception":"java.lang.NullPointerException + at java.base/java.util.Objects.requireNonNull(Objects.java:233) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.linkFirst(ConcurrentLinkedDeque.java:315) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.addFirst(ConcurrentLinkedDeque.java:827) + at cc.evil.logtest1.service.log.LogService$FailureWindow.release(LogService.java:157) + at cc.evil.logtest1.service.log.LogService$FailureWindow.push_back(LogService.java:146) + at cc.evil.logtest1.service.log.LogService.evaluateThresholdPolicy(LogService.java:85) + at cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(LogService.java:53) + at cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(LogService.java:63) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:114) + at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:317) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java) + at cc.evil.logtest1.config.AsyncConfig.lambda$traceableExecutor$0(AsyncConfig.java:34) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:27:08.527","level":"ERROR","traceId":"","uid":"","thread":"scheduling-1","logger":"org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler","msg":Unexpected error occurred in scheduled task,"exception":"java.lang.NullPointerException + at java.base/java.util.Objects.requireNonNull(Objects.java:233) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.linkFirst(ConcurrentLinkedDeque.java:315) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.addFirst(ConcurrentLinkedDeque.java:827) + at cc.evil.logtest1.service.log.LogService$FailureWindow.release(LogService.java:157) + at cc.evil.logtest1.service.log.LogService.lambda$cleanupIdleWindows$1(LogService.java:102) + at java.base/java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1603) + at cc.evil.logtest1.service.log.LogService.cleanupIdleWindows(LogService.java:101) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at cc.evil.logtest1.service.log.LogService$$SpringCGLIB$$0.cleanupIdleWindows() + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) + at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) + at io.micrometer.observation.Observation.observe(Observation.java:498) + at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) + at org.springframework.scheduling.config.Task$OutcomeTrackingRunnable.run(Task.java:87) + at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.runAndReset$$$capture(FutureTask.java:358) + at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:28:08.530","level":"ERROR","traceId":"","uid":"","thread":"scheduling-1","logger":"org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler","msg":Unexpected error occurred in scheduled task,"exception":"java.lang.NullPointerException + at java.base/java.util.Objects.requireNonNull(Objects.java:233) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.linkFirst(ConcurrentLinkedDeque.java:315) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.addFirst(ConcurrentLinkedDeque.java:827) + at cc.evil.logtest1.service.log.LogService$FailureWindow.release(LogService.java:157) + at cc.evil.logtest1.service.log.LogService.lambda$cleanupIdleWindows$1(LogService.java:102) + at java.base/java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1603) + at cc.evil.logtest1.service.log.LogService.cleanupIdleWindows(LogService.java:101) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at cc.evil.logtest1.service.log.LogService$$SpringCGLIB$$0.cleanupIdleWindows() + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) + at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) + at io.micrometer.observation.Observation.observe(Observation.java:498) + at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) + at org.springframework.scheduling.config.Task$OutcomeTrackingRunnable.run(Task.java:87) + at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.runAndReset$$$capture(FutureTask.java:358) + at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:29:08.541","level":"ERROR","traceId":"","uid":"","thread":"scheduling-1","logger":"org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler","msg":Unexpected error occurred in scheduled task,"exception":"java.lang.NullPointerException + at java.base/java.util.Objects.requireNonNull(Objects.java:233) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.linkFirst(ConcurrentLinkedDeque.java:315) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.addFirst(ConcurrentLinkedDeque.java:827) + at cc.evil.logtest1.service.log.LogService$FailureWindow.release(LogService.java:157) + at cc.evil.logtest1.service.log.LogService.lambda$cleanupIdleWindows$1(LogService.java:102) + at java.base/java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1603) + at cc.evil.logtest1.service.log.LogService.cleanupIdleWindows(LogService.java:101) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at cc.evil.logtest1.service.log.LogService$$SpringCGLIB$$0.cleanupIdleWindows() + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) + at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) + at io.micrometer.observation.Observation.observe(Observation.java:498) + at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) + at org.springframework.scheduling.config.Task$OutcomeTrackingRunnable.run(Task.java:87) + at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.runAndReset$$$capture(FutureTask.java:358) + at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:30:08.547","level":"ERROR","traceId":"","uid":"","thread":"scheduling-1","logger":"org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler","msg":Unexpected error occurred in scheduled task,"exception":"java.lang.NullPointerException + at java.base/java.util.Objects.requireNonNull(Objects.java:233) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.linkFirst(ConcurrentLinkedDeque.java:315) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.addFirst(ConcurrentLinkedDeque.java:827) + at cc.evil.logtest1.service.log.LogService$FailureWindow.release(LogService.java:157) + at cc.evil.logtest1.service.log.LogService.lambda$cleanupIdleWindows$1(LogService.java:102) + at java.base/java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1603) + at cc.evil.logtest1.service.log.LogService.cleanupIdleWindows(LogService.java:101) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at cc.evil.logtest1.service.log.LogService$$SpringCGLIB$$0.cleanupIdleWindows() + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) + at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) + at io.micrometer.observation.Observation.observe(Observation.java:498) + at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) + at org.springframework.scheduling.config.Task$OutcomeTrackingRunnable.run(Task.java:87) + at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.runAndReset$$$capture(FutureTask.java:358) + at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:30:25.887","level":"ERROR","traceId":"eb1336826da443f8a8ae5a608ae9e9cf","uid":"","thread":"http-nio-8080-exec-7","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":Unexpected exception caught: ,"exception":"cc.evil.logtest1.exception.EvilBaseException: 时间逻辑错误 + at cc.evil.logtest1.controller.logger.LogsController.getLogsFiles(LogsController.java:44) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:30:32.993","level":"ERROR","traceId":"bb6051b7e618403abd896f4c47303ddd","uid":"","thread":"http-nio-8080-exec-9","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":Unexpected exception caught: ,"exception":"cc.evil.logtest1.exception.EvilBaseException: 时间逻辑错误 + at cc.evil.logtest1.controller.logger.LogsController.getLogsFiles(LogsController.java:44) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:31:11.809","level":"ERROR","traceId":"af112c9691244bf7811c72f3e5cb19e4","uid":"","thread":"http-nio-8080-exec-1","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":Unexpected exception caught: ,"exception":"cc.evil.logtest1.exception.EvilBaseException: 时间逻辑错误 + at cc.evil.logtest1.controller.logger.LogsController.getLogsFiles(LogsController.java:44) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:32:08.559","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 17:33:08.564","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 17:33:34.355","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-04-01 17:33:34.372","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-04-01 17:33:36.387","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 43692 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-04-01 17:33:36.388","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-01 17:33:37.235","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-01 17:33:37.251","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 17:33:37.252","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-01 17:33:37.252","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-01 17:33:37.294","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-01 17:33:37.295","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 871 ms,"exception":""} +{"time":"2026-04-01 17:33:37.636","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 17:33:37.649","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-04-01 17:33:37.657","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.741 seconds (process running for 2.426),"exception":""} +{"time":"2026-04-01 17:33:37.658","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 17:33:40.372","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 17:33:40.372","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 17:33:40.373","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 1 ms,"exception":""} +{"time":"2026-04-01 17:33:40.422","level":"WARN","traceId":"7016b031424142cc8944e6ae3495aef2","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver","msg":Failure in @ExceptionHandler cc.evil.logtest1.handler.BusinessControllerExceptionHandler#handleBaseException(ClientException),"exception":"java.lang.IllegalStateException: Could not resolve parameter [0] in public org.springframework.http.ResponseEntity> cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleBaseException(cc.evil.logtest1.exception.ClientException): No suitable resolver + at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:181) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:471) + at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:73) + at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:182) + at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:80) + at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1360) + at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1161) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1106) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:33:40.424","level":"ERROR","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet]","msg":Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: cc.evil.logtest1.exception.EvilBaseException: 时间逻辑错误] with root cause,"exception":"cc.evil.logtest1.exception.EvilBaseException: 时间逻辑错误 + at cc.evil.logtest1.controller.logger.LogsController.getLogsFiles(LogsController.java:44) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:34:37.674","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 17:35:37.678","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 17:36:37.690","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 17:36:42.437","level":"WARN","traceId":"166e57ac9f0a4f28a4d4ac7b1f7b6491","uid":"","thread":"http-nio-8080-exec-4","logger":"org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver","msg":Failure in @ExceptionHandler cc.evil.logtest1.handler.BusinessControllerExceptionHandler#handleBaseException(ClientException),"exception":"java.lang.IllegalStateException: Could not resolve parameter [0] in public org.springframework.http.ResponseEntity> cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleBaseException(cc.evil.logtest1.exception.ClientException): No suitable resolver + at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:181) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:471) + at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:73) + at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:182) + at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:80) + at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1360) + at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1161) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1106) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:36:42.439","level":"ERROR","traceId":"","uid":"","thread":"http-nio-8080-exec-4","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet]","msg":Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: cc.evil.logtest1.exception.EvilBaseException: 时间逻辑错误] with root cause,"exception":"cc.evil.logtest1.exception.EvilBaseException: 时间逻辑错误 + at cc.evil.logtest1.controller.logger.LogsController.getLogsFiles(LogsController.java:44) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:36:49.024","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-04-01 17:36:49.032","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-04-01 17:36:50.880","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 47020 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-04-01 17:36:50.881","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-01 17:36:51.609","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-01 17:36:51.617","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 17:36:51.620","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-01 17:36:51.620","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-01 17:36:51.653","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-01 17:36:51.653","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 739 ms,"exception":""} +{"time":"2026-04-01 17:36:51.981","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 17:36:51.995","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-04-01 17:36:52.001","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.576 seconds (process running for 2.049),"exception":""} +{"time":"2026-04-01 17:36:52.004","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 17:36:54.038","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 17:36:54.039","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 17:36:54.039","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 0 ms,"exception":""} +{"time":"2026-04-01 17:37:09.975","level":"INFO","traceId":"1603b0161dcc415a893f6a7d1b0599ed","uid":"","thread":"http-nio-8080-exec-4","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载所有日志文件名,"exception":""} +{"time":"2026-04-01 17:37:52.017","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 17:37:55.363","level":"INFO","traceId":"3ed304d3c82945ecbadefd00b889547b","uid":"","thread":"http-nio-8080-exec-5","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载所有日志文件名,"exception":""} +{"time":"2026-04-01 17:38:22.739","level":"INFO","traceId":"d86e2be6a8c444aabeb43b914eb3dfe1","uid":"","thread":"http-nio-8080-exec-7","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载所有日志文件名,"exception":""} +{"time":"2026-04-01 17:38:52.025","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 17:39:50.360","level":"INFO","traceId":"99594ae5dc1f4388aa4ce0d7e1f174fc","uid":"","thread":"http-nio-8080-exec-9","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载所有日志文件名,"exception":""} +{"time":"2026-04-01 17:39:50.361","level":"WARN","traceId":"99594ae5dc1f4388aa4ce0d7e1f174fc","uid":"","thread":"http-nio-8080-exec-9","logger":"cc.evil.logtest1.service.log.LogFileService","msg":读取最后20行日志失败,"exception":"java.nio.file.NoSuchFileException: .\logs\app-info.0.log + at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) + at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) + at java.base/java.nio.file.Files.newByteChannel(Files.java:379) + at java.base/java.nio.file.Files.newByteChannel(Files.java:431) + at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) + at java.base/java.nio.file.Files.newInputStream(Files.java:159) + at java.base/java.nio.file.Files.newBufferedReader(Files.java:2897) + at java.base/java.nio.file.Files.readAllLines(Files.java:3392) + at cc.evil.logtest1.service.log.LogFileService.loadContentByDate(LogFileService.java:181) + at cc.evil.logtest1.service.log.LogFileService.fileTail(LogFileService.java:75) + at cc.evil.logtest1.controller.logger.LogsController.getFileTail(LogsController.java:61) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:39:52.036","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 17:40:52.042","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 17:41:52.055","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 17:42:52.065","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 17:42:59.111","level":"INFO","traceId":"19748464f310433da07eb882306c15a4","uid":"","thread":"http-nio-8080-exec-10","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载所有日志文件名,"exception":""} +{"time":"2026-04-01 17:42:59.112","level":"INFO","traceId":"19748464f310433da07eb882306c15a4","uid":"","thread":"http-nio-8080-exec-10","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载日期today的日志内容,"exception":""} +{"time":"2026-04-01 17:43:42.041","level":"INFO","traceId":"86a432c7ed8b4cba908e48e72bc1406d","uid":"","thread":"http-nio-8080-exec-1","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载所有日志文件名,"exception":""} +{"time":"2026-04-01 17:43:42.042","level":"INFO","traceId":"86a432c7ed8b4cba908e48e72bc1406d","uid":"","thread":"http-nio-8080-exec-1","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载日期today的日志内容,"exception":""} +{"time":"2026-04-01 17:43:48.152","level":"INFO","traceId":"500bbd8120964aedb5fa19f0fd4df8f8","uid":"","thread":"http-nio-8080-exec-3","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载所有日志文件名,"exception":""} +{"time":"2026-04-01 17:43:48.154","level":"INFO","traceId":"500bbd8120964aedb5fa19f0fd4df8f8","uid":"","thread":"http-nio-8080-exec-3","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载日期today的日志内容,"exception":""} +{"time":"2026-04-01 17:43:52.073","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 17:44:52.075","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 17:45:07.810","level":"INFO","traceId":"447524a0cc64450ca4a57c455b435fe2","uid":"","thread":"http-nio-8080-exec-6","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载所有日志文件名,"exception":""} +{"time":"2026-04-01 17:45:07.811","level":"WARN","traceId":"447524a0cc64450ca4a57c455b435fe2","uid":"","thread":"http-nio-8080-exec-6","logger":"cc.evil.logtest1.service.log.LogFileService","msg":读取最后500行日志失败,"exception":"java.nio.file.NoSuchFileException: .\logs\app-info.0.log + at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) + at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) + at java.base/java.nio.file.Files.newByteChannel(Files.java:379) + at java.base/java.nio.file.Files.newByteChannel(Files.java:431) + at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) + at java.base/java.nio.file.Files.newInputStream(Files.java:159) + at java.base/java.nio.file.Files.newBufferedReader(Files.java:2897) + at java.base/java.nio.file.Files.readAllLines(Files.java:3392) + at cc.evil.logtest1.service.log.LogFileService.loadContentByDate(LogFileService.java:182) + at cc.evil.logtest1.service.log.LogFileService.fileTail(LogFileService.java:76) + at cc.evil.logtest1.controller.logger.LogsController.getFileTail(LogsController.java:61) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:45:24.602","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-04-01 17:45:24.610","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-04-01 18:37:25.096","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 46740 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-04-01 18:37:25.097","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-01 18:37:26.171","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-01 18:37:26.184","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 18:37:26.185","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-01 18:37:26.185","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-01 18:37:26.235","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-01 18:37:26.235","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 1097 ms,"exception":""} +{"time":"2026-04-01 18:37:26.673","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 18:37:26.691","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-04-01 18:37:26.698","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 2.241 seconds (process running for 3.141),"exception":""} +{"time":"2026-04-01 18:37:26.701","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:37:31.240","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 18:37:31.240","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 18:37:31.241","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 1 ms,"exception":""} +{"time":"2026-04-01 18:37:31.276","level":"INFO","traceId":"e1579881daaa4ffdb791e934f14680b6","uid":"","thread":"http-nio-8080-exec-1","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载所有日志文件名,"exception":""} +{"time":"2026-04-01 18:37:31.281","level":"INFO","traceId":"e1579881daaa4ffdb791e934f14680b6","uid":"","thread":"http-nio-8080-exec-1","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载日期2026-03-31的日志内容,"exception":""} +{"time":"2026-04-01 18:37:51.157","level":"INFO","traceId":"3235596e1fe8400abe5ee1ba435f001c","uid":"","thread":"http-nio-8080-exec-4","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载所有日志文件名,"exception":""} +{"time":"2026-04-01 18:37:51.159","level":"INFO","traceId":"3235596e1fe8400abe5ee1ba435f001c","uid":"","thread":"http-nio-8080-exec-4","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载日期today的日志内容,"exception":""} +{"time":"2026-04-01 18:38:26.713","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:39:26.721","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:39:35.215","level":"INFO","traceId":"537d95f6b8d249d2ad448116fc1d70c1","uid":"","thread":"http-nio-8080-exec-7","logger":"cc.evil.logtest1.service.log.LogFileService","msg":成功加载所有日志文件名,"exception":""} +{"time":"2026-04-01 18:39:57.236","level":"ERROR","traceId":"d4aa16e96fd541c99e907ff4d8a2378b","uid":"","thread":"http-nio-8080-exec-6","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":Unexpected exception caught: ,"exception":"org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of `cc.evil.logtest1.model.vo.LogFileNameList` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('logFilesByDate') + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:408) + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:356) + at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:204) + at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:176) + at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:150) + at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122) + at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:227) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:181) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `cc.evil.logtest1.model.vo.LogFileNameList` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('logFilesByDate') + at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 1] + at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:63) + at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1781) + at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1406) + at com.fasterxml.jackson.databind.deser.std.StdDeserializer._deserializeFromString(StdDeserializer.java:310) + at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromString(BeanDeserializerBase.java:1594) + at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:189) + at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:179) + at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342) + at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2130) + at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1500) + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:397) + ... 54 common frames omitted +"} +{"time":"2026-04-01 18:39:57.242","level":"INFO","traceId":"d4aa16e96fd541c99e907ff4d8a2378b","uid":"","thread":"trace-exec-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Push now for unexpected error pushed log for exception: org.springframework.http.converter.HttpMessageNotReadableException, ruleKey: cc.evil.logtest1.filters.TraceIdFilter#doFilter.,"exception":""} +{"time":"2026-04-01 18:39:58.477","level":"INFO","traceId":"d4aa16e96fd541c99e907ff4d8a2378b","uid":"","thread":"trace-exec-1","logger":"cc.evil.logtest1.service.log.MailPushService","msg":Successfully sent log email to 2207086349@qq.com.,"exception":""} +{"time":"2026-04-01 18:40:26.729","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:41:26.743","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:42:26.743","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:43:26.746","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:44:26.761","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:45:26.772","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:46:26.787","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:47:26.791","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:48:26.805","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:49:26.811","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:50:26.828","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:51:26.841","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:52:26.846","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:53:26.859","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:54:26.861","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:55:26.865","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:56:26.875","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:57:26.881","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:58:26.886","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 18:59:26.897","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:00:26.914","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:01:26.919","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:02:26.922","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:03:26.928","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:04:26.937","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:05:26.942","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:06:26.953","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:07:26.955","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:08:26.958","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:09:26.960","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:10:20.200","level":"ERROR","traceId":"f3b6ecb3ca76481f87d39f77b5dfe8d2","uid":"","thread":"http-nio-8080-exec-1","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":Unexpected exception caught: ,"exception":"org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized field "logFilesByDate1" (class cc.evil.logtest1.model.vo.LogFileNameList), not marked as ignorable + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:408) + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:356) + at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:204) + at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:176) + at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:150) + at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122) + at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:227) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:181) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "logFilesByDate1" (class cc.evil.logtest1.model.vo.LogFileNameList), not marked as ignorable (one known property: "logFilesByDate"]) + at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 2, column: 25] (through reference chain: cc.evil.logtest1.model.vo.LogFileNameList["logFilesByDate1"]) + at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61) + at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1180) + at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2244) + at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1823) + at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1801) + at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:308) + at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:169) + at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342) + at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2130) + at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1500) + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:397) + ... 54 common frames omitted +"} +{"time":"2026-04-01 19:10:20.230","level":"INFO","traceId":"f3b6ecb3ca76481f87d39f77b5dfe8d2","uid":"","thread":"trace-exec-2","logger":"cc.evil.logtest1.service.log.LogService","msg":Push now for unexpected error pushed log for exception: org.springframework.http.converter.HttpMessageNotReadableException, ruleKey: cc.evil.logtest1.filters.TraceIdFilter#doFilter.,"exception":""} +{"time":"2026-04-01 19:10:21.052","level":"INFO","traceId":"f3b6ecb3ca76481f87d39f77b5dfe8d2","uid":"","thread":"trace-exec-2","logger":"cc.evil.logtest1.service.log.MailPushService","msg":Successfully sent log email to 2207086349@qq.com.,"exception":""} +{"time":"2026-04-01 19:10:26.965","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:11:03.416","level":"ERROR","traceId":"a53c9cb2789c43658f40c5e53c38f393","uid":"","thread":"http-nio-8080-exec-3","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":Unexpected exception caught: ,"exception":"org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized field "logFilesByDate1" (class cc.evil.logtest1.model.vo.LogFileNameList), not marked as ignorable + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:408) + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:356) + at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:204) + at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:176) + at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:150) + at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122) + at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:227) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:181) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "logFilesByDate1" (class cc.evil.logtest1.model.vo.LogFileNameList), not marked as ignorable (one known property: "logFilesByDate"]) + at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 2, column: 25] (through reference chain: cc.evil.logtest1.model.vo.LogFileNameList["logFilesByDate1"]) + at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61) + at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1180) + at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2244) + at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1823) + at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1801) + at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:308) + at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:169) + at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342) + at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2130) + at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1500) + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:397) + ... 54 common frames omitted +"} +{"time":"2026-04-01 19:11:03.423","level":"INFO","traceId":"a53c9cb2789c43658f40c5e53c38f393","uid":"","thread":"trace-exec-3","logger":"cc.evil.logtest1.service.log.LogService","msg":Push now for unexpected error pushed log for exception: org.springframework.http.converter.HttpMessageNotReadableException, ruleKey: cc.evil.logtest1.filters.TraceIdFilter#doFilter.,"exception":""} +{"time":"2026-04-01 19:11:04.373","level":"INFO","traceId":"a53c9cb2789c43658f40c5e53c38f393","uid":"","thread":"trace-exec-3","logger":"cc.evil.logtest1.service.log.MailPushService","msg":Successfully sent log email to 2207086349@qq.com.,"exception":""} +{"time":"2026-04-01 19:11:15.445","level":"ERROR","traceId":"93580b644bb34250b9d11e94648ab565","uid":"","thread":"http-nio-8080-exec-7","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":Unexpected exception caught: ,"exception":"org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized field "logFilesByDate1" (class cc.evil.logtest1.model.vo.LogFileNameList), not marked as ignorable + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:408) + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:356) + at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:204) + at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:176) + at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:150) + at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122) + at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:227) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:181) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "logFilesByDate1" (class cc.evil.logtest1.model.vo.LogFileNameList), not marked as ignorable (one known property: "logFilesByDate"]) + at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 2, column: 25] (through reference chain: cc.evil.logtest1.model.vo.LogFileNameList["logFilesByDate1"]) + at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61) + at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1180) + at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2244) + at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1823) + at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1801) + at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:308) + at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:169) + at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342) + at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2130) + at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1500) + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:397) + ... 54 common frames omitted +"} +{"time":"2026-04-01 19:11:15.449","level":"INFO","traceId":"93580b644bb34250b9d11e94648ab565","uid":"","thread":"trace-exec-4","logger":"cc.evil.logtest1.service.log.LogService","msg":Push now for unexpected error pushed log for exception: org.springframework.http.converter.HttpMessageNotReadableException, ruleKey: cc.evil.logtest1.filters.TraceIdFilter#doFilter.,"exception":""} +{"time":"2026-04-01 19:11:16.134","level":"INFO","traceId":"93580b644bb34250b9d11e94648ab565","uid":"","thread":"trace-exec-4","logger":"cc.evil.logtest1.service.log.MailPushService","msg":Successfully sent log email to 2207086349@qq.com.,"exception":""} +{"time":"2026-04-01 19:11:26.979","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:12:18.622","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-04-01 19:12:18.636","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-04-01 19:12:20.861","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 50492 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-04-01 19:12:20.863","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-01 19:12:21.698","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-01 19:12:21.710","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 19:12:21.711","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-01 19:12:21.711","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-01 19:12:21.754","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-01 19:12:21.754","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 861 ms,"exception":""} +{"time":"2026-04-01 19:12:22.044","level":"WARN","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext","msg":Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'handlerExceptionResolver' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Failed to instantiate [org.springframework.web.servlet.HandlerExceptionResolver]: Factory method 'handlerExceptionResolver' threw exception with message: Ambiguous @ExceptionHandler method mapped for [ExceptionHandler{exceptionType=org.springframework.http.converter.HttpMessageNotReadableException, mediaType=*/*}]: {public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleControllerBadRequest(java.lang.Exception), public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleHttpMessageNotReadable(org.springframework.http.converter.HttpMessageNotReadableException)},"exception":""} +{"time":"2026-04-01 19:12:22.046","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Stopping service [Tomcat],"exception":""} +{"time":"2026-04-01 19:12:22.054","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLogger","msg": + +Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.,"exception":""} +{"time":"2026-04-01 19:12:22.072","level":"ERROR","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.SpringApplication","msg":Application run failed,"exception":"org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'handlerExceptionResolver' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Failed to instantiate [org.springframework.web.servlet.HandlerExceptionResolver]: Factory method 'handlerExceptionResolver' threw exception with message: Ambiguous @ExceptionHandler method mapped for [ExceptionHandler{exceptionType=org.springframework.http.converter.HttpMessageNotReadableException, mediaType=*/*}]: {public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleControllerBadRequest(java.lang.Exception), public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleHttpMessageNotReadable(org.springframework.http.converter.HttpMessageNotReadableException)} + at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:657) + at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:645) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1375) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1205) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1228) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1194) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1130) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:990) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350) + at cc.evil.logtest1.LogTest1Application.main(LogTest1Application.java:14) +Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.HandlerExceptionResolver]: Factory method 'handlerExceptionResolver' threw exception with message: Ambiguous @ExceptionHandler method mapped for [ExceptionHandler{exceptionType=org.springframework.http.converter.HttpMessageNotReadableException, mediaType=*/*}]: {public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleControllerBadRequest(java.lang.Exception), public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleHttpMessageNotReadable(org.springframework.http.converter.HttpMessageNotReadableException)} + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:200) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiateWithFactoryMethod(SimpleInstantiationStrategy.java:89) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:169) + at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) + ... 21 common frames omitted +Caused by: java.lang.IllegalStateException: Ambiguous @ExceptionHandler method mapped for [ExceptionHandler{exceptionType=org.springframework.http.converter.HttpMessageNotReadableException, mediaType=*/*}]: {public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleControllerBadRequest(java.lang.Exception), public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleHttpMessageNotReadable(org.springframework.http.converter.HttpMessageNotReadableException)} + at org.springframework.web.method.annotation.ExceptionHandlerMethodResolver.addExceptionMapping(ExceptionHandlerMethodResolver.java:146) + at org.springframework.web.method.annotation.ExceptionHandlerMethodResolver.(ExceptionHandlerMethodResolver.java:99) + at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.initExceptionHandlerAdviceCache(ExceptionHandlerExceptionResolver.java:320) + at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.afterPropertiesSet(ExceptionHandlerExceptionResolver.java:287) + at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.addDefaultHandlerExceptionResolvers(WebMvcConfigurationSupport.java:1084) + at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.handlerExceptionResolver(WebMvcConfigurationSupport.java:1025) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:172) + ... 24 common frames omitted +"} +{"time":"2026-04-01 19:12:26.494","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 49768 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-04-01 19:12:26.495","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-01 19:12:27.251","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-01 19:12:27.261","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 19:12:27.262","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-01 19:12:27.262","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-01 19:12:27.300","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-01 19:12:27.300","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 772 ms,"exception":""} +{"time":"2026-04-01 19:12:27.579","level":"WARN","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext","msg":Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'handlerExceptionResolver' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Failed to instantiate [org.springframework.web.servlet.HandlerExceptionResolver]: Factory method 'handlerExceptionResolver' threw exception with message: Ambiguous @ExceptionHandler method mapped for [ExceptionHandler{exceptionType=org.springframework.http.converter.HttpMessageNotReadableException, mediaType=*/*}]: {public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleControllerBadRequest(java.lang.Exception), public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleHttpMessageNotReadable(org.springframework.http.converter.HttpMessageNotReadableException)},"exception":""} +{"time":"2026-04-01 19:12:27.582","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Stopping service [Tomcat],"exception":""} +{"time":"2026-04-01 19:12:27.588","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLogger","msg": + +Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.,"exception":""} +{"time":"2026-04-01 19:12:27.600","level":"ERROR","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.SpringApplication","msg":Application run failed,"exception":"org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'handlerExceptionResolver' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Failed to instantiate [org.springframework.web.servlet.HandlerExceptionResolver]: Factory method 'handlerExceptionResolver' threw exception with message: Ambiguous @ExceptionHandler method mapped for [ExceptionHandler{exceptionType=org.springframework.http.converter.HttpMessageNotReadableException, mediaType=*/*}]: {public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleControllerBadRequest(java.lang.Exception), public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleHttpMessageNotReadable(org.springframework.http.converter.HttpMessageNotReadableException)} + at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:657) + at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:645) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1375) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1205) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1228) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1194) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1130) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:990) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350) + at cc.evil.logtest1.LogTest1Application.main(LogTest1Application.java:14) +Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.HandlerExceptionResolver]: Factory method 'handlerExceptionResolver' threw exception with message: Ambiguous @ExceptionHandler method mapped for [ExceptionHandler{exceptionType=org.springframework.http.converter.HttpMessageNotReadableException, mediaType=*/*}]: {public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleControllerBadRequest(java.lang.Exception), public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleHttpMessageNotReadable(org.springframework.http.converter.HttpMessageNotReadableException)} + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:200) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiateWithFactoryMethod(SimpleInstantiationStrategy.java:89) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:169) + at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) + ... 21 common frames omitted +Caused by: java.lang.IllegalStateException: Ambiguous @ExceptionHandler method mapped for [ExceptionHandler{exceptionType=org.springframework.http.converter.HttpMessageNotReadableException, mediaType=*/*}]: {public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleControllerBadRequest(java.lang.Exception), public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleHttpMessageNotReadable(org.springframework.http.converter.HttpMessageNotReadableException)} + at org.springframework.web.method.annotation.ExceptionHandlerMethodResolver.addExceptionMapping(ExceptionHandlerMethodResolver.java:146) + at org.springframework.web.method.annotation.ExceptionHandlerMethodResolver.(ExceptionHandlerMethodResolver.java:99) + at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.initExceptionHandlerAdviceCache(ExceptionHandlerExceptionResolver.java:320) + at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.afterPropertiesSet(ExceptionHandlerExceptionResolver.java:287) + at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.addDefaultHandlerExceptionResolvers(WebMvcConfigurationSupport.java:1084) + at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.handlerExceptionResolver(WebMvcConfigurationSupport.java:1025) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:172) + ... 24 common frames omitted +"} +{"time":"2026-04-01 19:13:31.434","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.3 with PID 44312 (D:\Evil.cc\LogTest1\target\classes started by Admin in D:\Evil.cc\LogTest1),"exception":""} +{"time":"2026-04-01 19:13:31.435","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-01 19:13:32.257","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-01 19:13:32.267","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 19:13:32.269","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-01 19:13:32.269","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-01 19:13:32.308","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-01 19:13:32.309","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 824 ms,"exception":""} +{"time":"2026-04-01 19:13:32.672","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 19:13:32.697","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-04-01 19:13:32.704","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.776 seconds (process running for 2.38),"exception":""} +{"time":"2026-04-01 19:13:32.709","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:13:36.850","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-3","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 19:13:36.850","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-3","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 19:13:36.851","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-3","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 1 ms,"exception":""} +{"time":"2026-04-01 19:13:43.151","level":"WARN","traceId":"459ea9d77c9a4f43a5667882752cf5b6","uid":"","thread":"http-nio-8080-exec-6","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":JSON parse error: JSON parse error: Unrecognized field "logFilesByDate1" (class cc.evil.logtest1.model.vo.LogFileNameList), not marked as ignorable,"exception":""} +{"time":"2026-04-01 19:14:32.720","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:15:32.730","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:16:32.735","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:17:32.750","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:18:32.757","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:19:32.761","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:20:32.768","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:21:32.776","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:22:32.788","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:23:32.793","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:24:32.797","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:25:32.808","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:26:32.809","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:27:32.823","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:28:32.831","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:29:32.843","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:30:32.858","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:31:32.870","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:32:32.879","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:33:32.895","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:34:32.904","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:35:32.918","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:36:32.923","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:37:32.927","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:38:32.929","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:39:32.940","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:40:32.946","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:41:32.958","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:42:32.961","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:43:32.968","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:44:32.978","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:45:32.979","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:46:32.989","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:47:33.002","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:48:33.010","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:49:33.024","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:50:33.030","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:51:33.039","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:52:33.051","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:53:33.064","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:54:33.069","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:55:33.079","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:56:33.083","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:57:33.085","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:58:33.099","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 19:59:33.103","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 20:00:10.372","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-04-01 20:00:10.456","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-04-01 20:52:40.476","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.10 with PID 13192 (D:\workspace\evil.cc\LogTest1\target\classes started by y2207 in D:\workspace\evil.cc\LogTest1),"exception":""} +{"time":"2026-04-01 20:52:40.477","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-01 20:52:41.332","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-01 20:52:41.347","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 20:52:41.348","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-01 20:52:41.348","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-01 20:52:41.401","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-01 20:52:41.401","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 893 ms,"exception":""} +{"time":"2026-04-01 20:52:41.827","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 20:52:41.839","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-04-01 20:52:41.845","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.879 seconds (process running for 2.365),"exception":""} +{"time":"2026-04-01 20:52:41.847","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 20:52:45.954","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-3","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 20:52:45.954","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-3","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 20:52:45.956","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-3","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 1 ms,"exception":""} +{"time":"2026-04-01 20:52:46.005","level":"INFO","traceId":"b03770d6651f49d0ab7d40f4483583a6","uid":"","thread":"http-nio-8080-exec-3","logger":"cc.evil.logtest1.service.TestService","msg":Finished add, res = 3.,"exception":""} +{"time":"2026-04-01 20:52:46.036","level":"INFO","traceId":"b03770d6651f49d0ab7d40f4483583a6","uid":"","thread":"http-nio-8080-exec-3","logger":"cc.evil.logtest1.aop.aspcet.DefaultControllerLogAspect","msg":{"desc":"加法运算","className":"TestController","methodName":"add","uri":"/api/test/add/1/2","uid":"","durationMs":3,"status":"OK","exception":null},"exception":""} +{"time":"2026-04-01 20:53:13.811","level":"INFO","traceId":"eaa8d90e87ee4281af8441570ac2af15","uid":"","thread":"http-nio-8080-exec-2","logger":"cc.evil.logtest1.aop.aspcet.DefaultControllerLogAspect","msg":{"desc":"加法运算","className":"TestController","methodName":"add","uri":"/api/test/add/1/2a","uid":"","durationMs":1,"status":"OK","exception":null},"exception":""} +{"time":"2026-04-01 20:53:41.843","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 20:54:41.836","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 20:55:41.829","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 20:56:22.553","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-04-01 20:56:22.553","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-04-01 20:56:45.183","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.10 with PID 1100 (D:\workspace\evil.cc\LogTest1\target\classes started by y2207 in D:\workspace\evil.cc\LogTest1),"exception":""} +{"time":"2026-04-01 20:56:45.186","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-01 20:56:46.009","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-01 20:56:46.019","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 20:56:46.019","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-01 20:56:46.019","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-01 20:56:46.053","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-01 20:56:46.053","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 826 ms,"exception":""} +{"time":"2026-04-01 20:56:46.379","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 20:56:46.388","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-04-01 20:56:46.393","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.671 seconds (process running for 2.136),"exception":""} +{"time":"2026-04-01 20:56:46.399","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 20:56:49.591","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 20:56:49.591","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 20:56:49.592","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 0 ms,"exception":""} +{"time":"2026-04-01 20:56:49.652","level":"INFO","traceId":"49a9deca35d843b78a56d1db06171fe4","uid":"","thread":"http-nio-8080-exec-2","logger":"cc.evil.logtest1.aop.aspcet.DefaultControllerLogAspect","msg":{"desc":"加法运算","className":"TestController","methodName":"add","uri":"/api/test/add/1/2a","uid":"","durationMs":1,"status":null,"exception":null},"exception":""} +{"time":"2026-04-01 20:57:24.274","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-04-01 20:57:24.282","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-04-01 20:57:29.116","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.10 with PID 26828 (D:\workspace\evil.cc\LogTest1\target\classes started by y2207 in D:\workspace\evil.cc\LogTest1),"exception":""} +{"time":"2026-04-01 20:57:29.117","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-01 20:57:29.954","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-01 20:57:29.966","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 20:57:29.967","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-01 20:57:29.967","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-01 20:57:30.003","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-01 20:57:30.003","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 845 ms,"exception":""} +{"time":"2026-04-01 20:57:30.395","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 20:57:30.412","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-04-01 20:57:30.419","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.813 seconds (process running for 3.113),"exception":""} +{"time":"2026-04-01 20:57:30.423","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 20:57:54.546","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 20:57:54.546","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 20:57:54.546","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-1","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 0 ms,"exception":""} +{"time":"2026-04-01 20:57:54.708","level":"INFO","traceId":"518341ff873744b381aaa3c3c043589b","uid":"","thread":"http-nio-8080-exec-1","logger":"cc.evil.logtest1.aop.aspcet.DefaultControllerLogAspect","msg":{"desc":"加法运算","className":"TestController","methodName":"add","uri":"/api/test/add/1/2a","uid":"","durationMs":2,"status":null,"exception":null},"exception":""} +{"time":"2026-04-01 20:58:30.421","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 20:59:09.991","level":"INFO","traceId":"efaee3c7e1904550a4a3fd8cb2305520","uid":"","thread":"http-nio-8080-exec-2","logger":"cc.evil.logtest1.aop.aspcet.DefaultControllerLogAspect","msg":{"desc":"加法运算","className":"TestController","methodName":"add","uri":"/api/test/add/1/2a","uid":"","durationMs":28413,"status":null,"exception":null},"exception":""} +{"time":"2026-04-01 20:59:30.415","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 20:59:38.469","level":"INFO","traceId":"b07e32a6c456464b8b58c9eaf0c4bd2b","uid":"","thread":"http-nio-8080-exec-6","logger":"cc.evil.logtest1.aop.aspcet.DefaultControllerLogAspect","msg":{"desc":"加法运算","className":"TestController","methodName":"add","uri":"/api/test/add/1/2a","uid":"","durationMs":0,"status":"OK","exception":null},"exception":""} +{"time":"2026-04-01 21:00:31.149","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:00:31.151","level":"INFO","traceId":"a83ebc1e60174cc0bfdd1f49b9040bc7","uid":"","thread":"http-nio-8080-exec-7","logger":"cc.evil.logtest1.aop.aspcet.DefaultControllerLogAspect","msg":{"desc":"加法运算","className":"TestController","methodName":"add","uri":"/api/test/add/1/2a","uid":"","durationMs":41708,"status":"OK","exception":null},"exception":""} +{"time":"2026-04-01 21:01:31.141","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:02:31.137","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:03:31.139","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:04:31.133","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:05:31.134","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:06:31.140","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:07:31.134","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:08:31.134","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:09:31.140","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:10:31.134","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:11:31.131","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:11:31.132","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Remove idle window for ruleKey: cc.evil.logtest1.controller.TestController#add, because cleanup schedule.,"exception":""} +{"time":"2026-04-01 21:12:31.139","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:13:31.143","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:13:43.546","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-04-01 21:13:43.551","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-04-01 21:19:29.938","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.10 with PID 21996 (D:\workspace\evil.cc\LogTest1\target\classes started by y2207 in D:\workspace\evil.cc\LogTest1),"exception":""} +{"time":"2026-04-01 21:19:29.942","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-01 21:19:30.943","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-01 21:19:30.956","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 21:19:30.959","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-01 21:19:30.959","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-01 21:19:30.994","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-01 21:19:30.994","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 1016 ms,"exception":""} +{"time":"2026-04-01 21:19:31.438","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 21:19:31.453","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-04-01 21:19:31.467","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 2.049 seconds (process running for 2.692),"exception":""} +{"time":"2026-04-01 21:19:31.475","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:19:34.824","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 21:19:34.824","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 21:19:34.825","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 1 ms,"exception":""} +{"time":"2026-04-01 21:19:34.912","level":"INFO","traceId":"9f20d15d51ed4836842eb3079454d411","uid":"","thread":"http-nio-8080-exec-2","logger":"cc.evil.logtest1.aop.aspcet.DefaultControllerLogAspect","msg":{"desc":"加法运算","className":"TestController","methodName":"add","uri":"/api/test/add/1/2a","uid":"","durationMs":1,"status":"OK","exception":"cc.evil.logtest1.exception.EvilBaseException"},"exception":""} +{"time":"2026-04-01 21:20:31.473","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:21:14.607","level":"INFO","traceId":"0bffded6c8d04431a457a942e579ddb2","uid":"","thread":"http-nio-8080-exec-4","logger":"cc.evil.logtest1.aop.aspcet.DefaultControllerLogAspect","msg":{"desc":"加法运算","className":"TestController","methodName":"add","uri":"/api/test/add/1/2","uid":"","durationMs":3,"status":"OK","exception":"cc.evil.logtest1.exception.InternalServerException"},"exception":""} +{"time":"2026-04-01 21:21:31.473","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:21:55.384","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-04-01 21:21:55.403","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-04-01 21:21:58.916","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.10 with PID 23016 (D:\workspace\evil.cc\LogTest1\target\classes started by y2207 in D:\workspace\evil.cc\LogTest1),"exception":""} +{"time":"2026-04-01 21:21:58.918","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-01 21:21:59.690","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-01 21:21:59.699","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 21:21:59.700","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-01 21:21:59.700","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-01 21:21:59.734","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-01 21:21:59.734","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 780 ms,"exception":""} +{"time":"2026-04-01 21:22:00.093","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-01 21:22:00.110","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-04-01 21:22:00.117","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.692 seconds (process running for 2.303),"exception":""} +{"time":"2026-04-01 21:22:00.121","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:22:02.808","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring DispatcherServlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 21:22:02.808","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Initializing Servlet 'dispatcherServlet',"exception":""} +{"time":"2026-04-01 21:22:02.810","level":"INFO","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.DispatcherServlet","msg":Completed initialization in 2 ms,"exception":""} +{"time":"2026-04-01 21:22:02.937","level":"INFO","traceId":"c50344648ae5402183ac53b013471a3a","uid":"","thread":"http-nio-8080-exec-2","logger":"cc.evil.logtest1.aop.aspcet.DefaultControllerLogAspect","msg":{"desc":"加法运算","className":"TestController","methodName":"add","uri":"/api/test/add/1/2","uid":"","durationMs":5,"status":"OK","exception":"cc.evil.logtest1.exception.InternalServerException"},"exception":""} +{"time":"2026-04-01 21:23:00.119","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:24:00.122","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:24:17.099","level":"INFO","traceId":"083d0722bacf4d84b5603e455f78eca2","uid":"","thread":"http-nio-8080-exec-4","logger":"cc.evil.logtest1.aop.aspcet.DefaultControllerLogAspect","msg":{"desc":"加法运算","className":"TestController","methodName":"add","uri":"/api/test/add/1/2","uid":"","durationMs":0,"status":"INTERNAL_SERVER_ERROR","exception":"cc.evil.logtest1.exception.InternalServerException"},"exception":""} +{"time":"2026-04-01 21:25:00.121","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-01 21:25:44.142","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-04-01 21:25:44.149","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} diff --git a/logs/app-audit.log b/logs/app-audit.log new file mode 100644 index 0000000..e69de29 diff --git a/logs/app-error.log b/logs/app-error.log new file mode 100644 index 0000000..7b37f33 --- /dev/null +++ b/logs/app-error.log @@ -0,0 +1,1126 @@ +{"time":"2026-04-01 17:20:31.580","level":"ERROR","traceId":"317a8ebcc7624f778e042318bd16dae5","uid":"","thread":"http-nio-8080-exec-4","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":Unexpected exception caught: ,"exception":"org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'startTime' for method parameter type String is not present + at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.handleMissingValueInternal(RequestParamMethodArgumentResolver.java:220) + at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.handleMissingValue(RequestParamMethodArgumentResolver.java:196) + at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:125) + at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122) + at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:227) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:181) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:26:37.812","level":"ERROR","traceId":"6b45c4c665cd426980a3e8968568e8a9","uid":"","thread":"http-nio-8080-exec-3","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":Unexpected exception caught: ,"exception":"cc.evil.logtest1.exception.EvilBaseException: 时间逻辑错误 + at cc.evil.logtest1.controller.logger.LogsController.getLogsFiles(LogsController.java:44) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:26:37.823","level":"ERROR","traceId":"6b45c4c665cd426980a3e8968568e8a9","uid":"","thread":"trace-exec-1","logger":"org.springframework.aop.interceptor.SimpleAsyncUncaughtExceptionHandler","msg":Unexpected exception occurred invoking async method: public void cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(java.lang.Exception),"exception":"java.lang.NullPointerException + at java.base/java.util.Objects.requireNonNull(Objects.java:233) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.linkFirst(ConcurrentLinkedDeque.java:315) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.addFirst(ConcurrentLinkedDeque.java:827) + at cc.evil.logtest1.service.log.LogService$FailureWindow.release(LogService.java:157) + at cc.evil.logtest1.service.log.LogService$FailureWindow.push_back(LogService.java:146) + at cc.evil.logtest1.service.log.LogService.evaluateThresholdPolicy(LogService.java:85) + at cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(LogService.java:53) + at cc.evil.logtest1.service.log.LogService.pushLogWithDefaultPolicy(LogService.java:63) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:114) + at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:317) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java) + at cc.evil.logtest1.config.AsyncConfig.lambda$traceableExecutor$0(AsyncConfig.java:34) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:27:08.527","level":"ERROR","traceId":"","uid":"","thread":"scheduling-1","logger":"org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler","msg":Unexpected error occurred in scheduled task,"exception":"java.lang.NullPointerException + at java.base/java.util.Objects.requireNonNull(Objects.java:233) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.linkFirst(ConcurrentLinkedDeque.java:315) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.addFirst(ConcurrentLinkedDeque.java:827) + at cc.evil.logtest1.service.log.LogService$FailureWindow.release(LogService.java:157) + at cc.evil.logtest1.service.log.LogService.lambda$cleanupIdleWindows$1(LogService.java:102) + at java.base/java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1603) + at cc.evil.logtest1.service.log.LogService.cleanupIdleWindows(LogService.java:101) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at cc.evil.logtest1.service.log.LogService$$SpringCGLIB$$0.cleanupIdleWindows() + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) + at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) + at io.micrometer.observation.Observation.observe(Observation.java:498) + at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) + at org.springframework.scheduling.config.Task$OutcomeTrackingRunnable.run(Task.java:87) + at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.runAndReset$$$capture(FutureTask.java:358) + at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:28:08.530","level":"ERROR","traceId":"","uid":"","thread":"scheduling-1","logger":"org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler","msg":Unexpected error occurred in scheduled task,"exception":"java.lang.NullPointerException + at java.base/java.util.Objects.requireNonNull(Objects.java:233) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.linkFirst(ConcurrentLinkedDeque.java:315) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.addFirst(ConcurrentLinkedDeque.java:827) + at cc.evil.logtest1.service.log.LogService$FailureWindow.release(LogService.java:157) + at cc.evil.logtest1.service.log.LogService.lambda$cleanupIdleWindows$1(LogService.java:102) + at java.base/java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1603) + at cc.evil.logtest1.service.log.LogService.cleanupIdleWindows(LogService.java:101) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at cc.evil.logtest1.service.log.LogService$$SpringCGLIB$$0.cleanupIdleWindows() + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) + at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) + at io.micrometer.observation.Observation.observe(Observation.java:498) + at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) + at org.springframework.scheduling.config.Task$OutcomeTrackingRunnable.run(Task.java:87) + at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.runAndReset$$$capture(FutureTask.java:358) + at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:29:08.541","level":"ERROR","traceId":"","uid":"","thread":"scheduling-1","logger":"org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler","msg":Unexpected error occurred in scheduled task,"exception":"java.lang.NullPointerException + at java.base/java.util.Objects.requireNonNull(Objects.java:233) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.linkFirst(ConcurrentLinkedDeque.java:315) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.addFirst(ConcurrentLinkedDeque.java:827) + at cc.evil.logtest1.service.log.LogService$FailureWindow.release(LogService.java:157) + at cc.evil.logtest1.service.log.LogService.lambda$cleanupIdleWindows$1(LogService.java:102) + at java.base/java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1603) + at cc.evil.logtest1.service.log.LogService.cleanupIdleWindows(LogService.java:101) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at cc.evil.logtest1.service.log.LogService$$SpringCGLIB$$0.cleanupIdleWindows() + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) + at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) + at io.micrometer.observation.Observation.observe(Observation.java:498) + at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) + at org.springframework.scheduling.config.Task$OutcomeTrackingRunnable.run(Task.java:87) + at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.runAndReset$$$capture(FutureTask.java:358) + at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:30:08.547","level":"ERROR","traceId":"","uid":"","thread":"scheduling-1","logger":"org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler","msg":Unexpected error occurred in scheduled task,"exception":"java.lang.NullPointerException + at java.base/java.util.Objects.requireNonNull(Objects.java:233) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.linkFirst(ConcurrentLinkedDeque.java:315) + at java.base/java.util.concurrent.ConcurrentLinkedDeque.addFirst(ConcurrentLinkedDeque.java:827) + at cc.evil.logtest1.service.log.LogService$FailureWindow.release(LogService.java:157) + at cc.evil.logtest1.service.log.LogService.lambda$cleanupIdleWindows$1(LogService.java:102) + at java.base/java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1603) + at cc.evil.logtest1.service.log.LogService.cleanupIdleWindows(LogService.java:101) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at cc.evil.logtest1.service.log.LogService$$SpringCGLIB$$0.cleanupIdleWindows() + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130) + at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124) + at io.micrometer.observation.Observation.observe(Observation.java:498) + at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124) + at org.springframework.scheduling.config.Task$OutcomeTrackingRunnable.run(Task.java:87) + at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.runAndReset$$$capture(FutureTask.java:358) + at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:30:25.887","level":"ERROR","traceId":"eb1336826da443f8a8ae5a608ae9e9cf","uid":"","thread":"http-nio-8080-exec-7","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":Unexpected exception caught: ,"exception":"cc.evil.logtest1.exception.EvilBaseException: 时间逻辑错误 + at cc.evil.logtest1.controller.logger.LogsController.getLogsFiles(LogsController.java:44) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:30:32.993","level":"ERROR","traceId":"bb6051b7e618403abd896f4c47303ddd","uid":"","thread":"http-nio-8080-exec-9","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":Unexpected exception caught: ,"exception":"cc.evil.logtest1.exception.EvilBaseException: 时间逻辑错误 + at cc.evil.logtest1.controller.logger.LogsController.getLogsFiles(LogsController.java:44) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:31:11.809","level":"ERROR","traceId":"af112c9691244bf7811c72f3e5cb19e4","uid":"","thread":"http-nio-8080-exec-1","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":Unexpected exception caught: ,"exception":"cc.evil.logtest1.exception.EvilBaseException: 时间逻辑错误 + at cc.evil.logtest1.controller.logger.LogsController.getLogsFiles(LogsController.java:44) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:33:40.422","level":"WARN","traceId":"7016b031424142cc8944e6ae3495aef2","uid":"","thread":"http-nio-8080-exec-2","logger":"org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver","msg":Failure in @ExceptionHandler cc.evil.logtest1.handler.BusinessControllerExceptionHandler#handleBaseException(ClientException),"exception":"java.lang.IllegalStateException: Could not resolve parameter [0] in public org.springframework.http.ResponseEntity> cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleBaseException(cc.evil.logtest1.exception.ClientException): No suitable resolver + at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:181) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:471) + at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:73) + at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:182) + at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:80) + at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1360) + at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1161) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1106) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:33:40.424","level":"ERROR","traceId":"","uid":"","thread":"http-nio-8080-exec-2","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet]","msg":Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: cc.evil.logtest1.exception.EvilBaseException: 时间逻辑错误] with root cause,"exception":"cc.evil.logtest1.exception.EvilBaseException: 时间逻辑错误 + at cc.evil.logtest1.controller.logger.LogsController.getLogsFiles(LogsController.java:44) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:36:42.437","level":"WARN","traceId":"166e57ac9f0a4f28a4d4ac7b1f7b6491","uid":"","thread":"http-nio-8080-exec-4","logger":"org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver","msg":Failure in @ExceptionHandler cc.evil.logtest1.handler.BusinessControllerExceptionHandler#handleBaseException(ClientException),"exception":"java.lang.IllegalStateException: Could not resolve parameter [0] in public org.springframework.http.ResponseEntity> cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleBaseException(cc.evil.logtest1.exception.ClientException): No suitable resolver + at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:181) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:471) + at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:73) + at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:182) + at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:80) + at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1360) + at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1161) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1106) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:36:42.439","level":"ERROR","traceId":"","uid":"","thread":"http-nio-8080-exec-4","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet]","msg":Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: cc.evil.logtest1.exception.EvilBaseException: 时间逻辑错误] with root cause,"exception":"cc.evil.logtest1.exception.EvilBaseException: 时间逻辑错误 + at cc.evil.logtest1.controller.logger.LogsController.getLogsFiles(LogsController.java:44) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:39:50.361","level":"WARN","traceId":"99594ae5dc1f4388aa4ce0d7e1f174fc","uid":"","thread":"http-nio-8080-exec-9","logger":"cc.evil.logtest1.service.log.LogFileService","msg":读取最后20行日志失败,"exception":"java.nio.file.NoSuchFileException: .\logs\app-info.0.log + at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) + at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) + at java.base/java.nio.file.Files.newByteChannel(Files.java:379) + at java.base/java.nio.file.Files.newByteChannel(Files.java:431) + at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) + at java.base/java.nio.file.Files.newInputStream(Files.java:159) + at java.base/java.nio.file.Files.newBufferedReader(Files.java:2897) + at java.base/java.nio.file.Files.readAllLines(Files.java:3392) + at cc.evil.logtest1.service.log.LogFileService.loadContentByDate(LogFileService.java:181) + at cc.evil.logtest1.service.log.LogFileService.fileTail(LogFileService.java:75) + at cc.evil.logtest1.controller.logger.LogsController.getFileTail(LogsController.java:61) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 17:45:07.811","level":"WARN","traceId":"447524a0cc64450ca4a57c455b435fe2","uid":"","thread":"http-nio-8080-exec-6","logger":"cc.evil.logtest1.service.log.LogFileService","msg":读取最后500行日志失败,"exception":"java.nio.file.NoSuchFileException: .\logs\app-info.0.log + at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) + at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) + at java.base/java.nio.file.Files.newByteChannel(Files.java:379) + at java.base/java.nio.file.Files.newByteChannel(Files.java:431) + at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) + at java.base/java.nio.file.Files.newInputStream(Files.java:159) + at java.base/java.nio.file.Files.newBufferedReader(Files.java:2897) + at java.base/java.nio.file.Files.readAllLines(Files.java:3392) + at cc.evil.logtest1.service.log.LogFileService.loadContentByDate(LogFileService.java:182) + at cc.evil.logtest1.service.log.LogFileService.fileTail(LogFileService.java:76) + at cc.evil.logtest1.controller.logger.LogsController.getFileTail(LogsController.java:61) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +"} +{"time":"2026-04-01 18:39:57.236","level":"ERROR","traceId":"d4aa16e96fd541c99e907ff4d8a2378b","uid":"","thread":"http-nio-8080-exec-6","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":Unexpected exception caught: ,"exception":"org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of `cc.evil.logtest1.model.vo.LogFileNameList` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('logFilesByDate') + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:408) + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:356) + at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:204) + at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:176) + at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:150) + at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122) + at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:227) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:181) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `cc.evil.logtest1.model.vo.LogFileNameList` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('logFilesByDate') + at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 1] + at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:63) + at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1781) + at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1406) + at com.fasterxml.jackson.databind.deser.std.StdDeserializer._deserializeFromString(StdDeserializer.java:310) + at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromString(BeanDeserializerBase.java:1594) + at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:189) + at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:179) + at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342) + at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2130) + at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1500) + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:397) + ... 54 common frames omitted +"} +{"time":"2026-04-01 19:10:20.200","level":"ERROR","traceId":"f3b6ecb3ca76481f87d39f77b5dfe8d2","uid":"","thread":"http-nio-8080-exec-1","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":Unexpected exception caught: ,"exception":"org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized field "logFilesByDate1" (class cc.evil.logtest1.model.vo.LogFileNameList), not marked as ignorable + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:408) + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:356) + at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:204) + at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:176) + at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:150) + at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122) + at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:227) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:181) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "logFilesByDate1" (class cc.evil.logtest1.model.vo.LogFileNameList), not marked as ignorable (one known property: "logFilesByDate"]) + at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 2, column: 25] (through reference chain: cc.evil.logtest1.model.vo.LogFileNameList["logFilesByDate1"]) + at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61) + at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1180) + at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2244) + at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1823) + at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1801) + at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:308) + at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:169) + at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342) + at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2130) + at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1500) + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:397) + ... 54 common frames omitted +"} +{"time":"2026-04-01 19:11:03.416","level":"ERROR","traceId":"a53c9cb2789c43658f40c5e53c38f393","uid":"","thread":"http-nio-8080-exec-3","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":Unexpected exception caught: ,"exception":"org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized field "logFilesByDate1" (class cc.evil.logtest1.model.vo.LogFileNameList), not marked as ignorable + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:408) + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:356) + at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:204) + at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:176) + at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:150) + at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122) + at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:227) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:181) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "logFilesByDate1" (class cc.evil.logtest1.model.vo.LogFileNameList), not marked as ignorable (one known property: "logFilesByDate"]) + at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 2, column: 25] (through reference chain: cc.evil.logtest1.model.vo.LogFileNameList["logFilesByDate1"]) + at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61) + at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1180) + at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2244) + at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1823) + at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1801) + at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:308) + at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:169) + at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342) + at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2130) + at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1500) + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:397) + ... 54 common frames omitted +"} +{"time":"2026-04-01 19:11:15.445","level":"ERROR","traceId":"93580b644bb34250b9d11e94648ab565","uid":"","thread":"http-nio-8080-exec-7","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":Unexpected exception caught: ,"exception":"org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized field "logFilesByDate1" (class cc.evil.logtest1.model.vo.LogFileNameList), not marked as ignorable + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:408) + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:356) + at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:204) + at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:176) + at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:150) + at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122) + at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:227) + at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:181) + at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991) + at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896) + at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) + at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) + at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) + at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) + at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) + at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at cc.evil.logtest1.filters.TraceIdFilter.doFilter(TraceIdFilter.java:35) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "logFilesByDate1" (class cc.evil.logtest1.model.vo.LogFileNameList), not marked as ignorable (one known property: "logFilesByDate"]) + at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 2, column: 25] (through reference chain: cc.evil.logtest1.model.vo.LogFileNameList["logFilesByDate1"]) + at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61) + at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1180) + at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2244) + at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1823) + at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1801) + at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:308) + at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:169) + at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342) + at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2130) + at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1500) + at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:397) + ... 54 common frames omitted +"} +{"time":"2026-04-01 19:12:22.044","level":"WARN","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext","msg":Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'handlerExceptionResolver' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Failed to instantiate [org.springframework.web.servlet.HandlerExceptionResolver]: Factory method 'handlerExceptionResolver' threw exception with message: Ambiguous @ExceptionHandler method mapped for [ExceptionHandler{exceptionType=org.springframework.http.converter.HttpMessageNotReadableException, mediaType=*/*}]: {public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleControllerBadRequest(java.lang.Exception), public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleHttpMessageNotReadable(org.springframework.http.converter.HttpMessageNotReadableException)},"exception":""} +{"time":"2026-04-01 19:12:22.072","level":"ERROR","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.SpringApplication","msg":Application run failed,"exception":"org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'handlerExceptionResolver' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Failed to instantiate [org.springframework.web.servlet.HandlerExceptionResolver]: Factory method 'handlerExceptionResolver' threw exception with message: Ambiguous @ExceptionHandler method mapped for [ExceptionHandler{exceptionType=org.springframework.http.converter.HttpMessageNotReadableException, mediaType=*/*}]: {public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleControllerBadRequest(java.lang.Exception), public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleHttpMessageNotReadable(org.springframework.http.converter.HttpMessageNotReadableException)} + at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:657) + at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:645) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1375) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1205) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1228) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1194) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1130) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:990) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350) + at cc.evil.logtest1.LogTest1Application.main(LogTest1Application.java:14) +Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.HandlerExceptionResolver]: Factory method 'handlerExceptionResolver' threw exception with message: Ambiguous @ExceptionHandler method mapped for [ExceptionHandler{exceptionType=org.springframework.http.converter.HttpMessageNotReadableException, mediaType=*/*}]: {public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleControllerBadRequest(java.lang.Exception), public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleHttpMessageNotReadable(org.springframework.http.converter.HttpMessageNotReadableException)} + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:200) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiateWithFactoryMethod(SimpleInstantiationStrategy.java:89) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:169) + at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) + ... 21 common frames omitted +Caused by: java.lang.IllegalStateException: Ambiguous @ExceptionHandler method mapped for [ExceptionHandler{exceptionType=org.springframework.http.converter.HttpMessageNotReadableException, mediaType=*/*}]: {public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleControllerBadRequest(java.lang.Exception), public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleHttpMessageNotReadable(org.springframework.http.converter.HttpMessageNotReadableException)} + at org.springframework.web.method.annotation.ExceptionHandlerMethodResolver.addExceptionMapping(ExceptionHandlerMethodResolver.java:146) + at org.springframework.web.method.annotation.ExceptionHandlerMethodResolver.(ExceptionHandlerMethodResolver.java:99) + at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.initExceptionHandlerAdviceCache(ExceptionHandlerExceptionResolver.java:320) + at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.afterPropertiesSet(ExceptionHandlerExceptionResolver.java:287) + at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.addDefaultHandlerExceptionResolvers(WebMvcConfigurationSupport.java:1084) + at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.handlerExceptionResolver(WebMvcConfigurationSupport.java:1025) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:172) + ... 24 common frames omitted +"} +{"time":"2026-04-01 19:12:27.579","level":"WARN","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext","msg":Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'handlerExceptionResolver' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Failed to instantiate [org.springframework.web.servlet.HandlerExceptionResolver]: Factory method 'handlerExceptionResolver' threw exception with message: Ambiguous @ExceptionHandler method mapped for [ExceptionHandler{exceptionType=org.springframework.http.converter.HttpMessageNotReadableException, mediaType=*/*}]: {public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleControllerBadRequest(java.lang.Exception), public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleHttpMessageNotReadable(org.springframework.http.converter.HttpMessageNotReadableException)},"exception":""} +{"time":"2026-04-01 19:12:27.600","level":"ERROR","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.SpringApplication","msg":Application run failed,"exception":"org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'handlerExceptionResolver' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Failed to instantiate [org.springframework.web.servlet.HandlerExceptionResolver]: Factory method 'handlerExceptionResolver' threw exception with message: Ambiguous @ExceptionHandler method mapped for [ExceptionHandler{exceptionType=org.springframework.http.converter.HttpMessageNotReadableException, mediaType=*/*}]: {public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleControllerBadRequest(java.lang.Exception), public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleHttpMessageNotReadable(org.springframework.http.converter.HttpMessageNotReadableException)} + at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:657) + at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:645) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1375) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1205) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1228) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1194) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1130) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:990) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350) + at cc.evil.logtest1.LogTest1Application.main(LogTest1Application.java:14) +Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.HandlerExceptionResolver]: Factory method 'handlerExceptionResolver' threw exception with message: Ambiguous @ExceptionHandler method mapped for [ExceptionHandler{exceptionType=org.springframework.http.converter.HttpMessageNotReadableException, mediaType=*/*}]: {public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleControllerBadRequest(java.lang.Exception), public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleHttpMessageNotReadable(org.springframework.http.converter.HttpMessageNotReadableException)} + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:200) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiateWithFactoryMethod(SimpleInstantiationStrategy.java:89) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:169) + at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) + ... 21 common frames omitted +Caused by: java.lang.IllegalStateException: Ambiguous @ExceptionHandler method mapped for [ExceptionHandler{exceptionType=org.springframework.http.converter.HttpMessageNotReadableException, mediaType=*/*}]: {public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleControllerBadRequest(java.lang.Exception), public org.springframework.http.ResponseEntity cc.evil.logtest1.handler.BusinessControllerExceptionHandler.handleHttpMessageNotReadable(org.springframework.http.converter.HttpMessageNotReadableException)} + at org.springframework.web.method.annotation.ExceptionHandlerMethodResolver.addExceptionMapping(ExceptionHandlerMethodResolver.java:146) + at org.springframework.web.method.annotation.ExceptionHandlerMethodResolver.(ExceptionHandlerMethodResolver.java:99) + at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.initExceptionHandlerAdviceCache(ExceptionHandlerExceptionResolver.java:320) + at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.afterPropertiesSet(ExceptionHandlerExceptionResolver.java:287) + at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.addDefaultHandlerExceptionResolvers(WebMvcConfigurationSupport.java:1084) + at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.handlerExceptionResolver(WebMvcConfigurationSupport.java:1025) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:172) + ... 24 common frames omitted +"} +{"time":"2026-04-01 19:13:43.151","level":"WARN","traceId":"459ea9d77c9a4f43a5667882752cf5b6","uid":"","thread":"http-nio-8080-exec-6","logger":"cc.evil.logtest1.handler.BusinessControllerExceptionHandler","msg":JSON parse error: JSON parse error: Unrecognized field "logFilesByDate1" (class cc.evil.logtest1.model.vo.LogFileNameList), not marked as ignorable,"exception":""} diff --git a/logs/app-info.log b/logs/app-info.log new file mode 100644 index 0000000..aefb567 --- /dev/null +++ b/logs/app-info.log @@ -0,0 +1,72 @@ +{"time":"2026-04-03 16:28:19.590","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.10 with PID 26900 (D:\SpringOcean\AgrifeLogTest\target\classes started by y2207 in D:\SpringOcean\AgrifeLogTest),"exception":""} +{"time":"2026-04-03 16:28:19.591","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-03 16:28:20.448","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-03 16:28:20.472","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-03 16:28:20.473","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-03 16:28:20.475","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-03 16:28:20.513","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-03 16:28:20.513","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 891 ms,"exception":""} +{"time":"2026-04-03 16:28:20.933","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-03 16:28:20.947","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-04-03 16:28:20.953","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.831 seconds (process running for 2.326),"exception":""} +{"time":"2026-04-03 16:28:20.956","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-03 16:28:29.516","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-04-03 16:28:29.523","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-04-03 16:28:50.761","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.10 with PID 21608 (D:\SpringOcean\AgrifeLogTest\target\classes started by y2207 in D:\SpringOcean\AgrifeLogTest),"exception":""} +{"time":"2026-04-03 16:28:50.764","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-03 16:28:51.695","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-03 16:28:51.706","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-03 16:28:51.707","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-03 16:28:51.707","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-03 16:28:51.744","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-03 16:28:51.744","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 934 ms,"exception":""} +{"time":"2026-04-03 16:28:52.096","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-03 16:28:52.111","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-04-03 16:28:52.116","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.961 seconds (process running for 2.439),"exception":""} +{"time":"2026-04-03 16:28:52.120","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-03 16:29:04.763","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-04-03 16:29:04.769","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-04-03 16:29:06.573","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.10 with PID 21656 (D:\SpringOcean\AgrifeLogTest\target\classes started by y2207 in D:\SpringOcean\AgrifeLogTest),"exception":""} +{"time":"2026-04-03 16:29:06.574","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-03 16:29:07.301","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-03 16:29:07.310","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-03 16:29:07.311","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-03 16:29:07.311","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-03 16:29:07.342","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-03 16:29:07.343","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 740 ms,"exception":""} +{"time":"2026-04-03 16:29:07.698","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-03 16:29:07.712","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-04-03 16:29:07.717","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.614 seconds (process running for 2.017),"exception":""} +{"time":"2026-04-03 16:29:07.720","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-03 16:30:07.734","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-03 16:31:07.747","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-03 16:31:19.626","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-04-03 16:31:19.633","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-04-03 16:31:22.609","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.10 with PID 9536 (D:\SpringOcean\AgrifeLogTest\target\classes started by y2207 in D:\SpringOcean\AgrifeLogTest),"exception":""} +{"time":"2026-04-03 16:31:22.610","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-03 16:31:23.411","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-03 16:31:23.419","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-03 16:31:23.420","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-03 16:31:23.421","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-03 16:31:23.457","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-03 16:31:23.458","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 809 ms,"exception":""} +{"time":"2026-04-03 16:31:23.868","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-03 16:31:23.881","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-04-03 16:31:23.888","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.789 seconds (process running for 2.189),"exception":""} +{"time":"2026-04-03 16:31:23.894","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-03 16:31:46.564","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-04-03 16:31:46.569","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} +{"time":"2026-04-03 17:18:39.475","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Starting LogTest1Application using Java 21.0.10 with PID 27092 (D:\SpringOcean\AgrifeLogTest\target\classes started by y2207 in D:\SpringOcean\AgrifeLogTest),"exception":""} +{"time":"2026-04-03 17:18:39.476","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":The following 1 profile is active: "dev","exception":""} +{"time":"2026-04-03 17:18:40.405","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat initialized with port 8080 (http),"exception":""} +{"time":"2026-04-03 17:18:40.424","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Initializing ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-03 17:18:40.426","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardService","msg":Starting service [Tomcat],"exception":""} +{"time":"2026-04-03 17:18:40.427","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.StandardEngine","msg":Starting Servlet engine: [Apache Tomcat/10.1.50],"exception":""} +{"time":"2026-04-03 17:18:40.482","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","msg":Initializing Spring embedded WebApplicationContext,"exception":""} +{"time":"2026-04-03 17:18:40.482","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext","msg":Root WebApplicationContext: initialization completed in 975 ms,"exception":""} +{"time":"2026-04-03 17:18:40.889","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.apache.coyote.http11.Http11NioProtocol","msg":Starting ProtocolHandler ["http-nio-8080"],"exception":""} +{"time":"2026-04-03 17:18:40.901","level":"INFO","traceId":"","uid":"","thread":"main","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","msg":Tomcat started on port 8080 (http) with context path '/',"exception":""} +{"time":"2026-04-03 17:18:40.907","level":"INFO","traceId":"","uid":"","thread":"main","logger":"cc.evil.logtest1.LogTest1Application","msg":Started LogTest1Application in 1.918 seconds (process running for 2.401),"exception":""} +{"time":"2026-04-03 17:18:40.911","level":"INFO","traceId":"","uid":"","thread":"scheduling-1","logger":"cc.evil.logtest1.service.log.LogService","msg":Cleanup Idle windows for now.,"exception":""} +{"time":"2026-04-03 17:18:43.880","level":"INFO","traceId":"","uid":"","thread":"SpringApplicationShutdownHook","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Commencing graceful shutdown. Waiting for active requests to complete,"exception":""} +{"time":"2026-04-03 17:18:43.885","level":"INFO","traceId":"","uid":"","thread":"tomcat-shutdown","logger":"org.springframework.boot.web.embedded.tomcat.GracefulShutdown","msg":Graceful shutdown complete,"exception":""} diff --git a/logs/app.log b/logs/app.log new file mode 100644 index 0000000..27063f1 --- /dev/null +++ b/logs/app.log @@ -0,0 +1,15 @@ +{"timestamp":"2026-03-30 16:23:55.786","thread":"main","traceId":"","level":"INFO","logger":"cc.evil.logtest1.LogTest1Application","message":"Starting LogTest1Application using Java 21.0.10 with PID 5372 (D:\workspace\evil.cc\LogTest1\target\classes started by y2207 in D:\workspace\evil.cc\LogTest1)"}, +{"timestamp":"2026-03-30 16:23:55.787","thread":"main","traceId":"","level":"INFO","logger":"cc.evil.logtest1.LogTest1Application","message":"The following 1 profile is active: "dev""}, +{"timestamp":"2026-03-30 16:23:56.427","thread":"main","traceId":"","level":"INFO","logger":"org.springframework.boot.tomcat.TomcatWebServer","message":"Tomcat initialized with port 8080 (http)"}, +{"timestamp":"2026-03-30 16:23:56.435","thread":"main","traceId":"","level":"INFO","logger":"org.apache.coyote.http11.Http11NioProtocol","message":"Initializing ProtocolHandler ["http-nio-8080"]"}, +{"timestamp":"2026-03-30 16:23:56.438","thread":"main","traceId":"","level":"INFO","logger":"org.apache.catalina.core.StandardService","message":"Starting service [Tomcat]"}, +{"timestamp":"2026-03-30 16:23:56.438","thread":"main","traceId":"","level":"INFO","logger":"org.apache.catalina.core.StandardEngine","message":"Starting Servlet engine: [Apache Tomcat/11.0.20]"}, +{"timestamp":"2026-03-30 16:23:56.489","thread":"main","traceId":"","level":"INFO","logger":"org.springframework.boot.web.context.servlet.WebApplicationContextInitializer","message":"Root WebApplicationContext: initialization completed in 671 ms"}, +{"timestamp":"2026-03-30 16:23:56.854","thread":"main","traceId":"","level":"INFO","logger":"org.apache.coyote.http11.Http11NioProtocol","message":"Starting ProtocolHandler ["http-nio-8080"]"}, +{"timestamp":"2026-03-30 16:23:56.870","thread":"main","traceId":"","level":"INFO","logger":"org.springframework.boot.tomcat.TomcatWebServer","message":"Tomcat started on port 8080 (http) with context path '/'"}, +{"timestamp":"2026-03-30 16:23:56.874","thread":"main","traceId":"","level":"INFO","logger":"cc.evil.logtest1.LogTest1Application","message":"Started LogTest1Application in 1.591 seconds (process running for 2.108)"}, +{"timestamp":"2026-03-30 16:24:06.130","thread":"SpringApplicationShutdownHook","traceId":"","level":"INFO","logger":"org.springframework.boot.tomcat.GracefulShutdown","message":"Commencing graceful shutdown. Waiting for active requests to complete"}, +{"timestamp":"2026-03-30 16:24:06.135","thread":"tomcat-shutdown","traceId":"","level":"INFO","logger":"org.springframework.boot.tomcat.GracefulShutdown","message":"Graceful shutdown complete"}, +{"timestamp":"2026-03-30 16:24:38.365","thread":"main","traceId":"","level":"INFO","logger":"cc.evil.logtest1.LogTest1ApplicationTests","message":"Starting LogTest1ApplicationTests using Java 21.0.10 with PID 18384 (started by y2207 in D:\workspace\evil.cc\LogTest1)"}, +{"timestamp":"2026-03-30 16:24:38.369","thread":"main","traceId":"","level":"INFO","logger":"cc.evil.logtest1.LogTest1ApplicationTests","message":"The following 1 profile is active: "dev""}, +{"timestamp":"2026-03-30 16:24:39.343","thread":"main","traceId":"","level":"INFO","logger":"cc.evil.logtest1.LogTest1ApplicationTests","message":"Started LogTest1ApplicationTests in 1.31 seconds (process running for 3.932)"}, diff --git a/mvnw b/mvnw new file mode 100644 index 0000000..bd8896b --- /dev/null +++ b/mvnw @@ -0,0 +1,295 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.3.4 +# +# Optional ENV vars +# ----------------- +# JAVA_HOME - location of a JDK home dir, required when download maven via java source +# MVNW_REPOURL - repo url base for downloading maven distribution +# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output +# ---------------------------------------------------------------------------- + +set -euf +[ "${MVNW_VERBOSE-}" != debug ] || set -x + +# OS specific support. +native_path() { printf %s\\n "$1"; } +case "$(uname)" in +CYGWIN* | MINGW*) + [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" + native_path() { cygpath --path --windows "$1"; } + ;; +esac + +# set JAVACMD and JAVACCMD +set_java_home() { + # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched + if [ -n "${JAVA_HOME-}" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACCMD="$JAVA_HOME/jre/sh/javac" + else + JAVACMD="$JAVA_HOME/bin/java" + JAVACCMD="$JAVA_HOME/bin/javac" + + if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then + echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 + echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 + return 1 + fi + fi + else + JAVACMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v java + )" || : + JAVACCMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v javac + )" || : + + if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then + echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 + return 1 + fi + fi +} + +# hash string like Java String::hashCode +hash_string() { + str="${1:-}" h=0 + while [ -n "$str" ]; do + char="${str%"${str#?}"}" + h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) + str="${str#?}" + done + printf %x\\n $h +} + +verbose() { :; } +[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } + +die() { + printf %s\\n "$1" >&2 + exit 1 +} + +trim() { + # MWRAPPER-139: + # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. + # Needed for removing poorly interpreted newline sequences when running in more + # exotic environments such as mingw bash on Windows. + printf "%s" "${1}" | tr -d '[:space:]' +} + +scriptDir="$(dirname "$0")" +scriptName="$(basename "$0")" + +# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties +while IFS="=" read -r key value; do + case "${key-}" in + distributionUrl) distributionUrl=$(trim "${value-}") ;; + distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; + esac +done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties" +[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" + +case "${distributionUrl##*/}" in +maven-mvnd-*bin.*) + MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ + case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in + *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; + :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; + :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; + :Linux*x86_64*) distributionPlatform=linux-amd64 ;; + *) + echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 + distributionPlatform=linux-amd64 + ;; + esac + distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" + ;; +maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; +*) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; +esac + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" +distributionUrlName="${distributionUrl##*/}" +distributionUrlNameMain="${distributionUrlName%.*}" +distributionUrlNameMain="${distributionUrlNameMain%-bin}" +MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" +MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" + +exec_maven() { + unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : + exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" +} + +if [ -d "$MAVEN_HOME" ]; then + verbose "found existing MAVEN_HOME at $MAVEN_HOME" + exec_maven "$@" +fi + +case "${distributionUrl-}" in +*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; +*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; +esac + +# prepare tmp dir +if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then + clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } + trap clean HUP INT TERM EXIT +else + die "cannot create temp dir" +fi + +mkdir -p -- "${MAVEN_HOME%/*}" + +# Download and Install Apache Maven +verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +verbose "Downloading from: $distributionUrl" +verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +# select .zip or .tar.gz +if ! command -v unzip >/dev/null; then + distributionUrl="${distributionUrl%.zip}.tar.gz" + distributionUrlName="${distributionUrl##*/}" +fi + +# verbose opt +__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' +[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v + +# normalize http auth +case "${MVNW_PASSWORD:+has-password}" in +'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; +has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; +esac + +if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then + verbose "Found wget ... using wget" + wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" +elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then + verbose "Found curl ... using curl" + curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" +elif set_java_home; then + verbose "Falling back to use Java to download" + javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" + targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" + cat >"$javaSource" <<-END + public class Downloader extends java.net.Authenticator + { + protected java.net.PasswordAuthentication getPasswordAuthentication() + { + return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); + } + public static void main( String[] args ) throws Exception + { + setDefault( new Downloader() ); + java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); + } + } + END + # For Cygwin/MinGW, switch paths to Windows format before running javac and java + verbose " - Compiling Downloader.java ..." + "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" + verbose " - Running Downloader.java ..." + "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" +fi + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +if [ -n "${distributionSha256Sum-}" ]; then + distributionSha256Result=false + if [ "$MVN_CMD" = mvnd.sh ]; then + echo "Checksum validation is not supported for maven-mvnd." >&2 + echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + elif command -v sha256sum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c - >/dev/null 2>&1; then + distributionSha256Result=true + fi + elif command -v shasum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 + echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + fi + if [ $distributionSha256Result = false ]; then + echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 + echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 + exit 1 + fi +fi + +# unzip and move +if command -v unzip >/dev/null; then + unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" +else + tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" +fi + +# Find the actual extracted directory name (handles snapshots where filename != directory name) +actualDistributionDir="" + +# First try the expected directory name (for regular distributions) +if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then + if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then + actualDistributionDir="$distributionUrlNameMain" + fi +fi + +# If not found, search for any directory with the Maven executable (for snapshots) +if [ -z "$actualDistributionDir" ]; then + # enable globbing to iterate over items + set +f + for dir in "$TMP_DOWNLOAD_DIR"/*; do + if [ -d "$dir" ]; then + if [ -f "$dir/bin/$MVN_CMD" ]; then + actualDistributionDir="$(basename "$dir")" + break + fi + fi + done + set -f +fi + +if [ -z "$actualDistributionDir" ]; then + verbose "Contents of $TMP_DOWNLOAD_DIR:" + verbose "$(ls -la "$TMP_DOWNLOAD_DIR")" + die "Could not find Maven distribution directory in extracted archive" +fi + +verbose "Found extracted Maven distribution directory: $actualDistributionDir" +printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url" +mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" + +clean || : +exec_maven "$@" diff --git a/mvnw.cmd b/mvnw.cmd new file mode 100644 index 0000000..92450f9 --- /dev/null +++ b/mvnw.cmd @@ -0,0 +1,189 @@ +<# : batch portion +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.3.4 +@REM +@REM Optional ENV vars +@REM MVNW_REPOURL - repo url base for downloading maven distribution +@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output +@REM ---------------------------------------------------------------------------- + +@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) +@SET __MVNW_CMD__= +@SET __MVNW_ERROR__= +@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% +@SET PSModulePath= +@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( + IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) +) +@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% +@SET __MVNW_PSMODULEP_SAVE= +@SET __MVNW_ARG0_NAME__= +@SET MVNW_USERNAME= +@SET MVNW_PASSWORD= +@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*) +@echo Cannot start maven from wrapper >&2 && exit /b 1 +@GOTO :EOF +: end batch / begin powershell #> + +$ErrorActionPreference = "Stop" +if ($env:MVNW_VERBOSE -eq "true") { + $VerbosePreference = "Continue" +} + +# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties +$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl +if (!$distributionUrl) { + Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" +} + +switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { + "maven-mvnd-*" { + $USE_MVND = $true + $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" + $MVN_CMD = "mvnd.cmd" + break + } + default { + $USE_MVND = $false + $MVN_CMD = $script -replace '^mvnw','mvn' + break + } +} + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +if ($env:MVNW_REPOURL) { + $MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else { "/maven/mvnd/" } + $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')" +} +$distributionUrlName = $distributionUrl -replace '^.*/','' +$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' + +$MAVEN_M2_PATH = "$HOME/.m2" +if ($env:MAVEN_USER_HOME) { + $MAVEN_M2_PATH = "$env:MAVEN_USER_HOME" +} + +if (-not (Test-Path -Path $MAVEN_M2_PATH)) { + New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null +} + +$MAVEN_WRAPPER_DISTS = $null +if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) { + $MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists" +} else { + $MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists" +} + +$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain" +$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' +$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" + +if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { + Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" + Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" + exit $? +} + +if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { + Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" +} + +# prepare tmp dir +$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile +$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" +$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null +trap { + if ($TMP_DOWNLOAD_DIR.Exists) { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } + } +} + +New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null + +# Download and Install Apache Maven +Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +Write-Verbose "Downloading from: $distributionUrl" +Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +$webclient = New-Object System.Net.WebClient +if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { + $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) +} +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum +if ($distributionSha256Sum) { + if ($USE_MVND) { + Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." + } + Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash + if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { + Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." + } +} + +# unzip and move +Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null + +# Find the actual extracted directory name (handles snapshots where filename != directory name) +$actualDistributionDir = "" + +# First try the expected directory name (for regular distributions) +$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain" +$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD" +if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) { + $actualDistributionDir = $distributionUrlNameMain +} + +# If not found, search for any directory with the Maven executable (for snapshots) +if (!$actualDistributionDir) { + Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object { + $testPath = Join-Path $_.FullName "bin/$MVN_CMD" + if (Test-Path -Path $testPath -PathType Leaf) { + $actualDistributionDir = $_.Name + } + } +} + +if (!$actualDistributionDir) { + Write-Error "Could not find Maven distribution directory in extracted archive" +} + +Write-Verbose "Found extracted Maven distribution directory: $actualDistributionDir" +Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName $MAVEN_HOME_NAME | Out-Null +try { + Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null +} catch { + if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { + Write-Error "fail to move MAVEN_HOME" + } +} finally { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } +} + +Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..afad585 --- /dev/null +++ b/pom.xml @@ -0,0 +1,161 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.5.10 + + + cc.Evil + LogTest1 + 0.0.1-SNAPSHOT + LogTest1 + LogTest1 + + + + + + + + + + + + + + + 21 + 3.5.15 + 3.39.0 + 4.4.0 + + + + + + org.springframework.boot + spring-boot-starter-web + + + + + com.auth0 + java-jwt + ${java-jwt.version} + + + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + + + org.projectlombok + lombok + true + + + + + org.springframework.boot + spring-boot-starter-aop + + + + + org.springframework.boot + spring-boot-starter-mail + + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.security + spring-security-test + test + + + + org.testcontainers + junit-jupiter + test + + + + org.springframework.boot + spring-boot-testcontainers + test + + + + org.testcontainers + mysql + test + + + + org.testcontainers + mariadb + test + + + + org.mariadb.jdbc + mariadb-java-client + test + + + + org.springframework.retry + spring-retry + + + + com.squareup.okhttp3 + okhttp + 4.12.0 + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + org.projectlombok + lombok + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/src/main/java/cc/evil/logtest1/LogTest1Application.java b/src/main/java/cc/evil/logtest1/LogTest1Application.java new file mode 100644 index 0000000..6b9e40a --- /dev/null +++ b/src/main/java/cc/evil/logtest1/LogTest1Application.java @@ -0,0 +1,17 @@ +package cc.evil.logtest1; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.scheduling.annotation.EnableScheduling; + +@ServletComponentScan // 启用 @WebFilter 的注解 +@EnableScheduling // 启用定时任务 +@SpringBootApplication +public class LogTest1Application { + + public static void main(String[] args) { + SpringApplication.run(LogTest1Application.class, args); + } + +} diff --git a/src/main/java/cc/evil/logtest1/aop/annotation/DefaultControllerLog.java b/src/main/java/cc/evil/logtest1/aop/annotation/DefaultControllerLog.java new file mode 100644 index 0000000..3cc3c30 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/aop/annotation/DefaultControllerLog.java @@ -0,0 +1,28 @@ +package cc.evil.logtest1.aop.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 一些记录controller日志的配置, 待扩展; + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface DefaultControllerLog { + /** + * 功能描述 + */ + String desc() default ""; + + /** + * 是否记录请求参数 + */ + boolean recordParams() default false; + + /** + * 是否记录响应结果 + */ + boolean recordResult() default true; +} diff --git a/src/main/java/cc/evil/logtest1/aop/aspcet/DefaultControllerLogAspect.java b/src/main/java/cc/evil/logtest1/aop/aspcet/DefaultControllerLogAspect.java new file mode 100644 index 0000000..2525d2f --- /dev/null +++ b/src/main/java/cc/evil/logtest1/aop/aspcet/DefaultControllerLogAspect.java @@ -0,0 +1,109 @@ +package cc.evil.logtest1.aop.aspcet; + +import cc.evil.logtest1.aop.annotation.DefaultControllerLog; +import cc.evil.logtest1.exception.EvilBaseException; +import cc.evil.logtest1.log.ControllerLogBO; +import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import lombok.*; +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import java.lang.reflect.Method; + +/** + * Controller的AOP类, 用来统计接口信息; + *

+ * 记录的信息包括: + * - 自定义描述 + * - 类名 + * - 方法名 + * - 请求uri + * - 请求的uid + * - 请求响应时间 + * - 异常信息 + * - 响应状态码 + */ +@Aspect +@Slf4j +@Component +@RequiredArgsConstructor +public class DefaultControllerLogAspect { + // utils + private final ObjectMapper objectMapper; + + @Around("@annotation(logconfig)") + public Object aroundController(ProceedingJoinPoint pjp, DefaultControllerLog logconfig) throws Throwable { + // 获取请求上下文 + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + if (attributes == null) { + return pjp.proceed(); + } + + HttpServletRequest request = attributes.getRequest(); + long startTime = System.currentTimeMillis(); + + // 获取方法信息 + MethodSignature signature = (MethodSignature) pjp.getSignature(); + Method method = signature.getMethod(); + String className = pjp.getTarget().getClass().getSimpleName(); + String methodName = method.getName(); + + ControllerLogBO logBo = new ControllerLogBO(); + logBo.setDesc(logconfig.desc()); + logBo.setClassName(className); + logBo.setMethodName(methodName); + logBo.setUri(request.getRequestURI()); + logBo.setUid(getUid(request)); + + Throwable caught = null; + try { + return pjp.proceed(); + } catch (Throwable e) { + caught = e; + throw e; + } finally { + logBo.setDurationMs(System.currentTimeMillis() - startTime); + logBo.setException(caught != null ? caught.getClass().getName() : null); + logBo.setStatus(resolveStatus(attributes, caught)); + + try { + log.info(objectMapper.writeValueAsString(logBo)); + } catch (Exception e) { + log.warn("Failed to serialize ControllerLogBO: {}, error message: {}", logBo, e.getMessage()); + } + } + } + + private HttpStatus resolveStatus(ServletRequestAttributes attributes, Throwable e) { + if (e != null) { + if (e instanceof EvilBaseException) { + return ((EvilBaseException) e).getErrorCode().getHttpStatus(); + } + return HttpStatus.INTERNAL_SERVER_ERROR; + } + + HttpServletResponse response = attributes.getResponse(); + if (response != null) { + try { + return HttpStatus.valueOf(response.getStatus()); + } catch (Exception ex) { + log.warn("Failed to resolve HTTP status from response, error message: {}", ex.getMessage()); + } + } + return null; + } + + // TODO: 完善获取Uid的逻辑 + private String getUid(HttpServletRequest request) { + return ""; + } +} diff --git a/src/main/java/cc/evil/logtest1/config/AsyncConfig.java b/src/main/java/cc/evil/logtest1/config/AsyncConfig.java new file mode 100644 index 0000000..63f4359 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/config/AsyncConfig.java @@ -0,0 +1,52 @@ +package cc.evil.logtest1.config; + +import org.slf4j.MDC; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import java.util.Map; +import java.util.concurrent.Executor; + +/** + * SpringBoot异步配置类 + */ +@EnableAsync +@Configuration +public class AsyncConfig { + /** + * 自定义的异步可追踪日志线程池, 这样异步也能追踪到日志链; + * 只需要标记@Async("traceableExecutor")注解就能够使用; + */ + @Bean("traceableExecutor") + public Executor traceableExecutor() { + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(5); // 基础线程数量 + executor.setMaxPoolSize(20); // 最大线程数量; + executor.setQueueCapacity(100); + executor.setThreadNamePrefix("trace-exec-"); + + // 包装任务, 传递 MDC + executor.setTaskDecorator(runnable -> { + // 在提交任务时捕获当前线程的 MDC + Map contextMap = MDC.getCopyOfContextMap(); + + return () -> { + try { + // 在新线程中恢复 MDC + if (contextMap != null) { + MDC.setContextMap(contextMap); + } + runnable.run(); + } finally { + // 清理上下文 + MDC.clear(); + } + }; + }); + + executor.initialize(); + return executor; + } +} diff --git a/src/main/java/cc/evil/logtest1/config/BaseConfig.java b/src/main/java/cc/evil/logtest1/config/BaseConfig.java new file mode 100644 index 0000000..cb5e54b --- /dev/null +++ b/src/main/java/cc/evil/logtest1/config/BaseConfig.java @@ -0,0 +1,16 @@ +package cc.evil.logtest1.config; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class BaseConfig { + /** + * 创建默认的ObjectMapper Bean, 以便在整个应用中使用同一个实例, 不用反复实例化; + */ + @Bean + public ObjectMapper objectMapper() { + return new ObjectMapper(); + } +} diff --git a/src/main/java/cc/evil/logtest1/config/MailConfig.java b/src/main/java/cc/evil/logtest1/config/MailConfig.java new file mode 100644 index 0000000..96ad775 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/config/MailConfig.java @@ -0,0 +1,88 @@ +package cc.evil.logtest1.config; + +import lombok.Getter; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.mail.MailSender; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.JavaMailSenderImpl; + +import java.util.HashSet; +import java.util.List; +import java.util.Properties; +import java.util.Set; + +/** + * 一些邮箱的配置类, 在这里统一管理配置; + */ +@Configuration +public class MailConfig { + /** + * 邮件服务器配置 + */ + @Value("${log.push.mail.username:}") + private String username; + + @Value("${log.push.mail.password:}") + private String password; + + @Value("${log.push.mail.host:}") + private String host; + + @Value("${log.push.mail.port:}") + private int port; + + @Value("${log.push.mail.protocol:smtp}") + private String protocol; + + /** + * 收发邮箱配置, 默认都为空; + */ + @Getter + @Value("${log.push.mail.from-email:}") + private String fromEmail; + + // 列表, 用逗号分隔 + @Value("${log.push.mail.to-emails:#{new java.util.ArrayList()}}") + private List toEmails; + + @Getter + private Set toEmailsSet = new HashSet<>(); + + /** + * MailSender配置; + */ + @Bean + public JavaMailSender getMailSender() { + JavaMailSenderImpl sender = new JavaMailSenderImpl(); + sender.setHost(host); + sender.setPort(port); + sender.setUsername(username); + sender.setPassword(password); + sender.setProtocol(protocol); + sender.setDefaultEncoding("UTF-8"); + + Properties props = new Properties(); + props.put("mail.smtp.auth", true); + props.put("mail.smtp.starttls.enable", true); + props.put("mail.smtp.starttls.required", true); + props.put("mail.smtp.timeout", 5000); + sender.setJavaMailProperties(props); + + toEmailsSet.addAll(toEmails); + + return sender; + } + + /** + * 添加和删除发送邮箱; + */ + public void addEmail(List toEmails) { + this.toEmailsSet.addAll(toEmails); + } + + public void removeEmail(String toEmail) { + this.toEmailsSet.remove(toEmail); + } +} diff --git a/src/main/java/cc/evil/logtest1/constants/LogConstants.java b/src/main/java/cc/evil/logtest1/constants/LogConstants.java new file mode 100644 index 0000000..a4ee88e --- /dev/null +++ b/src/main/java/cc/evil/logtest1/constants/LogConstants.java @@ -0,0 +1,14 @@ +package cc.evil.logtest1.constants; + +/** + * 日志记录的一些常量设置 + */ +public class LogConstants { + + public static final String TRACE_ID_HEADER = "X-Trace-Id"; + public static final String TRACE_ID_MDC_KEY = "traceId"; + public static final String SPAN_ID_MDC_KEY = "spanId"; + + private LogConstants() { + } +} diff --git a/src/main/java/cc/evil/logtest1/controller/TestController.java b/src/main/java/cc/evil/logtest1/controller/TestController.java new file mode 100644 index 0000000..bbe14b9 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/controller/TestController.java @@ -0,0 +1,69 @@ +package cc.evil.logtest1.controller; + +import cc.evil.logtest1.aop.annotation.DefaultControllerLog; +import cc.evil.logtest1.exception.ClientException; +import cc.evil.logtest1.exception.EvilBaseException; +import cc.evil.logtest1.exception.EvilErrorCode; +import cc.evil.logtest1.exception.InternalServerException; +import cc.evil.logtest1.service.TestService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/test") +public class TestController { + // service + private final TestService testService; + + @DefaultControllerLog(desc = "获取名字") + @GetMapping("/get-name-reverse/{name}") + public String getNameReverse(@PathVariable String name) { + log.info("getNameReverse called with name: {}", name); + String reversedName = testService.reverseStr(name); + testService.printStr(reversedName, 50); + log.info("Reversed name: {}", reversedName); + return reversedName; + } + + @GetMapping("/add/{a}/{b}") + @DefaultControllerLog(desc = "加法运算") + public String add(@PathVariable String a, @PathVariable String b) { + try { + int numa = 0, numb = 0; + try { + numa = Integer.parseInt(a); + numb = Integer.parseInt(b); + } catch (NumberFormatException e) { + throw new EvilBaseException(EvilErrorCode.BAD_REQUEST, "参数必须是整数"); + } + return testService.add(numa, numb); + } catch (EvilBaseException ebe) { + throw ebe; + } catch (Exception e) { + throw new InternalServerException(EvilErrorCode.UNEXPECTED_ERROR); + } + } + + @GetMapping("/test-normal-exception") + public String testNormalException() { + var a = new ClientException(EvilErrorCode.UNAUTHORIZED, "401错误测试"); + a.setPushLogNow(true); + throw a; + } + + @GetMapping("/test-normal-exception1") + public String testNormalException1() { + throw new InternalServerException(EvilErrorCode.INTERNAL_SERVER_ERROR, "500错误测试"); + } + + @GetMapping("/test-unexpected-exception") + public String testUnexpectedException() { + throw new RuntimeException("这是一个未预期的异常"); + } +} diff --git a/src/main/java/cc/evil/logtest1/controller/logger/LogsController.java b/src/main/java/cc/evil/logtest1/controller/logger/LogsController.java new file mode 100644 index 0000000..30505a3 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/controller/logger/LogsController.java @@ -0,0 +1,122 @@ +package cc.evil.logtest1.controller.logger; + +import cc.evil.logtest1.exception.ClientException; +import cc.evil.logtest1.exception.EvilBaseException; +import cc.evil.logtest1.exception.EvilErrorCode; +import cc.evil.logtest1.exception.InternalServerException; +import cc.evil.logtest1.model.dto.EmailListDTO; +import cc.evil.logtest1.model.vo.LogFileNameList; +import cc.evil.logtest1.service.log.LogFileService; +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; +import java.util.List; + +/** + * 实现日志的基本功能: + * - 获取日志文件列表, 支持按日期范围过滤; + * - 获取日志文件的尾部内容, 支持指定行数; + * - 下载日志文件, 支持批量下载并打包成zip; + * - 添加和删除发送邮箱; + */ +@RestController +@RequestMapping("/api/logs") +@RequiredArgsConstructor +public class LogsController { + + // service + private final LogFileService logFileService; + + /** + * 日志日期格式 + */ + @Value("${logs.file.date_format:yyyy-MM-dd}") + private final String dateFormat = "yyyy-MM-dd"; + + private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormat); + + @GetMapping("/files") + public LogFileNameList getLogsFiles(@RequestParam(value = "startDate", required = false) String startDate, @RequestParam(value = "endDate", required = false) String endDate) { + LocalDate start = null, end = null; + try { + if (startDate != null && !startDate.isBlank()) + start = LocalDate.parse(startDate.trim(), formatter); + if (endDate != null && !endDate.isBlank()) + end = LocalDate.parse(endDate.trim(), formatter); + if (start != null && end != null && start.isAfter(end)) + throw new EvilBaseException(EvilErrorCode.TIME_LOGICAL_ERROR); + if (end != null && end.isAfter(LocalDate.now())) + endDate = LocalDate.now().format(formatter); + return logFileService.getLogFiles(start, end); + } catch (EvilBaseException ebe) { + throw ebe; + } catch (DateTimeParseException e) { + throw new ClientException(EvilErrorCode.BAD_REQUEST, "日期解析错误"); + } catch (Exception e) { + throw new InternalServerException(EvilErrorCode.UNEXPECTED_ERROR); + } + } + + @GetMapping("/tail") + public List getFileTail(@RequestParam(value = "lines", defaultValue = "200") int lines) { + lines = Math.min(lines, 500); + try { + return logFileService.fileTail(lines); + } catch (EvilBaseException ebe) { + throw ebe; + } catch (Exception e) { + throw new InternalServerException(EvilErrorCode.UNEXPECTED_ERROR); + } + } + + @PostMapping("/download") + public void downloadLogs(@RequestBody LogFileNameList logFileNameList, HttpServletResponse response) { + if (logFileNameList == null || logFileNameList.getLogFilesByDate() == null || logFileNameList.getLogFilesByDate().isEmpty()) { + throw new ClientException(EvilErrorCode.BAD_REQUEST, "下载文件列表不能为空"); + } + + try { + String downloadFileName = "logs-" + LocalDate.now().format(formatter) + ".zip"; + response.setContentType("application/zip"); + response.setHeader("Content-Disposition", "attachment; filename=\"" + downloadFileName + "\""); + logFileService.writeLogsToZip(logFileNameList, response.getOutputStream()); + response.flushBuffer(); + } catch (EvilBaseException ebe) { + throw ebe; + } catch (IOException e) { + throw new InternalServerException(EvilErrorCode.SERVER_FILE_IO_ERROR, "下载日志压缩包失败"); + } catch (Exception e) { + throw new InternalServerException(EvilErrorCode.UNEXPECTED_ERROR); + } + } + + @PostMapping("/email") + public void addEmail(@RequestBody EmailListDTO email) { + try { + logFileService.addEmails(email.getEmails()); + } catch (EvilBaseException ebe) { + throw ebe; + } catch (Exception e) { + throw new InternalServerException(EvilErrorCode.UNEXPECTED_ERROR); + } + } + + @DeleteMapping("/email") + public void delEmail(@RequestBody EmailListDTO email) { + try { + for (var emails : email.getEmails()) { + logFileService.removeEmail(emails); + } + } catch (EvilBaseException ebe) { + throw ebe; + } catch (Exception e) { + throw new InternalServerException(EvilErrorCode.UNEXPECTED_ERROR); + } + } +} diff --git a/src/main/java/cc/evil/logtest1/exception/ClientException.java b/src/main/java/cc/evil/logtest1/exception/ClientException.java new file mode 100644 index 0000000..ac80750 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/exception/ClientException.java @@ -0,0 +1,23 @@ +package cc.evil.logtest1.exception; + +import lombok.Getter; + +/** + * 客户端异常 + */ +@Getter +public class ClientException extends EvilBaseException { + private final EvilErrorCode errorCode; + private final String customMsg; + public ClientException(EvilErrorCode errorCode) { + super(errorCode); + this.errorCode = errorCode; + this.customMsg = null; + } + + public ClientException(EvilErrorCode errorCode, String message) { + super(errorCode, message); + this.errorCode = errorCode; + this.customMsg = message; + } +} diff --git a/src/main/java/cc/evil/logtest1/exception/EvilBaseException.java b/src/main/java/cc/evil/logtest1/exception/EvilBaseException.java new file mode 100644 index 0000000..9d23b70 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/exception/EvilBaseException.java @@ -0,0 +1,31 @@ +package cc.evil.logtest1.exception; + +import lombok.Getter; +import lombok.Setter; + +/** + * 基础异常类, 所有自定义异常都应该继承这个类 + * 应该将错误码的消息传给上层异常, 用来返回给前端, 而CustomMsg是用来记录日志的, 可能包含一些敏感信息, 不应该返回给前端 + */ +public class EvilBaseException extends RuntimeException { + @Getter + private final EvilErrorCode errorCode; + @Getter + private final String customMsg; + + @Getter + @Setter + public boolean pushLogNow = false; // 是否立即推送日志, 而不是等待窗口再推送 + + public EvilBaseException(EvilErrorCode errorCode) { + super(errorCode.getMessage()); + this.errorCode = errorCode; + this.customMsg = null; + } + + public EvilBaseException(EvilErrorCode errorCode, String customMsg) { + super(errorCode.getMessage()); + this.errorCode = errorCode; + this.customMsg = customMsg; + } +} diff --git a/src/main/java/cc/evil/logtest1/exception/EvilErrorCode.java b/src/main/java/cc/evil/logtest1/exception/EvilErrorCode.java new file mode 100644 index 0000000..a9fee78 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/exception/EvilErrorCode.java @@ -0,0 +1,41 @@ +package cc.evil.logtest1.exception; + +import lombok.Getter; +import org.springframework.http.HttpStatus; + +@Getter +public enum EvilErrorCode { + /** + * 4** 错误 + */ + BAD_REQUEST(HttpStatus.BAD_REQUEST, 40001, "请求参数错误"), + + TIME_LOGICAL_ERROR(HttpStatus.BAD_REQUEST, 40002, "时间逻辑错误"), + + UNAUTHORIZED(HttpStatus.UNAUTHORIZED, 40101, "未授权访问"), + + /** + * 5** 错误 + */ + UNEXPECTED_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, 50000, "未知错误"), + + INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, 50001, "服务器内部错误"), + + SERVER_FILE_IO_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, 50002, "服务器文件系统错误"), + + INTERNAL_PRECONDITION_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, 50003, "内部参数校验错误") + + + ; + + + private final HttpStatus httpStatus; + private final int businessCode; + private final String message; + + EvilErrorCode(HttpStatus httpStatus, int businessCode, String message) { + this.httpStatus = httpStatus; + this.businessCode = businessCode; + this.message = message; + } +} diff --git a/src/main/java/cc/evil/logtest1/exception/InternalServerException.java b/src/main/java/cc/evil/logtest1/exception/InternalServerException.java new file mode 100644 index 0000000..c69d2c5 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/exception/InternalServerException.java @@ -0,0 +1,25 @@ +package cc.evil.logtest1.exception; + +import lombok.Getter; +import lombok.Setter; + +/** + * 服务器内部异常 + */ +@Getter +public class InternalServerException extends EvilBaseException { + private final EvilErrorCode errorCode; + private final String customMsg; + + public InternalServerException(EvilErrorCode errorCode) { + super(errorCode); + this.errorCode = errorCode; + this.customMsg = null; + } + + public InternalServerException(EvilErrorCode errorCode, String message) { + super(errorCode, message); + this.errorCode = errorCode; + this.customMsg = message; + } +} diff --git a/src/main/java/cc/evil/logtest1/filters/TraceIdFilter.java b/src/main/java/cc/evil/logtest1/filters/TraceIdFilter.java new file mode 100644 index 0000000..7feb42c --- /dev/null +++ b/src/main/java/cc/evil/logtest1/filters/TraceIdFilter.java @@ -0,0 +1,42 @@ +package cc.evil.logtest1.filters; + +import cc.evil.logtest1.constants.LogConstants; +import cc.evil.logtest1.utils.TraceContextUtil; +import jakarta.servlet.*; +import jakarta.servlet.annotation.WebFilter; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.core.annotation.Order; + +import java.io.IOException; + +@Order(1) +//@Component -> 不需要这个, 这个会和WebFilter冲突, 导致重复注册Bean +@WebFilter(urlPatterns = "/*", filterName = "traceIdFilter") // 过滤所有请求 +public class TraceIdFilter implements Filter { + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + HttpServletRequest httpRequest = (HttpServletRequest) servletRequest; + HttpServletResponse httpResponse = (HttpServletResponse) servletResponse; + System.out.println("TraceIdFilter doFilter: " + httpRequest.getRequestURI()); + + try { + // ========== 1. 获取或生成 TraceId ========== + String traceId = httpRequest.getHeader(LogConstants.TRACE_ID_HEADER); + TraceContextUtil.init(traceId); + + // ========== 2. 放入请求属性,方便后续取用 ========== + httpRequest.setAttribute(LogConstants.TRACE_ID_HEADER, TraceContextUtil.getTraceId()); + + // ========== 3. 设置到响应头 ========== + httpResponse.setHeader(LogConstants.TRACE_ID_HEADER, TraceContextUtil.getTraceId()); + + // ========== 4. 放行 ========== + filterChain.doFilter(servletRequest, servletResponse); + + } finally { + // ========== 5. 清理 ========== + TraceContextUtil.clear(); + } + } +} diff --git a/src/main/java/cc/evil/logtest1/handler/BusinessControllerExceptionHandler.java b/src/main/java/cc/evil/logtest1/handler/BusinessControllerExceptionHandler.java new file mode 100644 index 0000000..304dc88 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/handler/BusinessControllerExceptionHandler.java @@ -0,0 +1,123 @@ +package cc.evil.logtest1.handler; + +import cc.evil.logtest1.exception.ClientException; +import cc.evil.logtest1.exception.EvilBaseException; +import cc.evil.logtest1.exception.EvilErrorCode; +import cc.evil.logtest1.exception.InternalServerException; +import cc.evil.logtest1.model.vo.EvilResponse; +import cc.evil.logtest1.service.log.LogService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.http.converter.HttpMessageNotReadableException; +import org.springframework.validation.BindException; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.MissingServletRequestParameterException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; + +@Slf4j +@RestControllerAdvice(basePackages = "cc.evil.logtest1.controller") +@RequiredArgsConstructor +public class BusinessControllerExceptionHandler { + + private final LogService logService; + + /** + * 处理服务器内部错误异常 + */ + @ExceptionHandler(InternalServerException.class) + public ResponseEntity> handleInternalServerError(InternalServerException e) { + // 推送日志到日志系统 + logService.pushLogWithDefaultPolicy(e); + + // 将错误返回给前端 + return ResponseEntity + .status(e.getErrorCode().getHttpStatus()) + .body(EvilResponse.error(e.getErrorCode())); + } + + /** + * 处理客户端错误 + */ + @ExceptionHandler(ClientException.class) + public ResponseEntity> handleClientException(ClientException e) { + // 推送日志到日志系统 + logService.pushLogWithDefaultPolicy(e); + + // 将错误返回给前端 + return ResponseEntity + .status(e.getErrorCode().getHttpStatus()) + .body(EvilResponse.error(e.getErrorCode())); + } + + /** + * 处理泛类 + */ + @ExceptionHandler(EvilBaseException.class) + public ResponseEntity> handleBaseException(EvilBaseException e) { + // 推送日志到日志系统 + logService.pushLogWithDefaultPolicy(e); + + // 将错误返回给前端 + return ResponseEntity + .status(e.getErrorCode().getHttpStatus()) + .body(EvilResponse.error(e.getErrorCode())); + } + + /** + * 处理 Controller 参数解析错误 + * 这类错误属于客户端请求不合法, 不应按意料之外异常触发邮件告警 + */ +// @ExceptionHandler({ +// MethodArgumentTypeMismatchException.class, +// MissingServletRequestParameterException.class, +// HttpMessageNotReadableException.class, +// MethodArgumentNotValidException.class, +// BindException.class +// }) +// public ResponseEntity> handleControllerBadRequest(Exception e) { +// log.warn("Bad request in controller: {}", e.getMessage()); +// return ResponseEntity +// .status(HttpStatus.BAD_REQUEST) +// .body(EvilResponse.error(EvilErrorCode.BAD_REQUEST)); +// } + + /* + HttpMessageNotReadableException(JSON 解析失败)→ 返回 400 +HttpRequestMethodNotSupportedException(方法不支持)→ 返回 405 +MissingServletRequestParameterException(缺少参数)→ 返回 400 +NoHandlerFoundException(404)→ 返回 404 + + */ + + @ExceptionHandler(HttpMessageNotReadableException.class) + public ResponseEntity> handleHttpMessageNotReadable( + HttpMessageNotReadableException ex) { + + // 可选:记录日志(注意不要记录敏感数据) + log.warn("JSON parse error: {}", ex.getMessage()); + + // 返回 400 Bad Request + 友好的错误信息 + return ResponseEntity + .status(HttpStatus.BAD_REQUEST) + .body(EvilResponse.error(EvilErrorCode.BAD_REQUEST)); + } + + /** + * 未捕获的异常 -> 不应该这样做, 太宽泛了 + */ +// @ExceptionHandler(Exception.class) +// public ResponseEntity> handleException(Exception e) { +// log.error("Unexpected exception caught: ", e); +// // 推送日志到日志系统 +// logService.pushLogWithDefaultPolicy(e); +// +// // 将错误返回给前端,使用通用的服务器内部错误码 +// return ResponseEntity +// .status(HttpStatus.INTERNAL_SERVER_ERROR) +// .body(EvilResponse.error(EvilErrorCode.INTERNAL_SERVER_ERROR)); +// } +} diff --git a/src/main/java/cc/evil/logtest1/log/ControllerLogBO.java b/src/main/java/cc/evil/logtest1/log/ControllerLogBO.java new file mode 100644 index 0000000..da7dffd --- /dev/null +++ b/src/main/java/cc/evil/logtest1/log/ControllerLogBO.java @@ -0,0 +1,22 @@ +package cc.evil.logtest1.log; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.http.HttpStatus; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ControllerLogBO { + private String desc; + private String className; + private String methodName; + private String uri; + private String uid; + private long durationMs; + private HttpStatus status; + private String exception; +} \ No newline at end of file diff --git a/src/main/java/cc/evil/logtest1/model/dto/EmailListDTO.java b/src/main/java/cc/evil/logtest1/model/dto/EmailListDTO.java new file mode 100644 index 0000000..f929458 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/model/dto/EmailListDTO.java @@ -0,0 +1,14 @@ +package cc.evil.logtest1.model.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EmailListDTO { + List emails; +} diff --git a/src/main/java/cc/evil/logtest1/model/dto/FileDownloadDTO.java b/src/main/java/cc/evil/logtest1/model/dto/FileDownloadDTO.java new file mode 100644 index 0000000..bd27eca --- /dev/null +++ b/src/main/java/cc/evil/logtest1/model/dto/FileDownloadDTO.java @@ -0,0 +1,14 @@ +package cc.evil.logtest1.model.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class FileDownloadDTO { + List files; +} diff --git a/src/main/java/cc/evil/logtest1/model/vo/EvilResponse.java b/src/main/java/cc/evil/logtest1/model/vo/EvilResponse.java new file mode 100644 index 0000000..6757cc7 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/model/vo/EvilResponse.java @@ -0,0 +1,40 @@ +package cc.evil.logtest1.model.vo; + +import cc.evil.logtest1.exception.EvilErrorCode; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class EvilResponse { + private Integer code; + private String message; + private T data; + + public static EvilResponse success(T data) { + return EvilResponse.builder() + .code(0) + .message("success") + .data(data) + .build(); + } + + public static EvilResponse success(T data, String successMsg) { + return EvilResponse.builder() + .code(0) + .message(successMsg) + .data(data) + .build(); + } + + public static EvilResponse success() { + return success(null); + } + + public static EvilResponse error(EvilErrorCode errorCode) { + return EvilResponse.builder() + .code(errorCode.getBusinessCode()) + .message(errorCode.getMessage()) + .build(); + } +} diff --git a/src/main/java/cc/evil/logtest1/model/vo/LogFileNameList.java b/src/main/java/cc/evil/logtest1/model/vo/LogFileNameList.java new file mode 100644 index 0000000..1541722 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/model/vo/LogFileNameList.java @@ -0,0 +1,17 @@ +package cc.evil.logtest1.model.vo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class LogFileNameList { + Map> logFilesByDate; +} diff --git a/src/main/java/cc/evil/logtest1/service/TestService.java b/src/main/java/cc/evil/logtest1/service/TestService.java new file mode 100644 index 0000000..18bc449 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/service/TestService.java @@ -0,0 +1,35 @@ +package cc.evil.logtest1.service; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@RequiredArgsConstructor +public class TestService { + public String reverseStr(String str) { + log.info("Start reversing string, str = {}.", str); + var res = new StringBuilder(str).reverse().toString(); + log.info("Finished reversing string, res = {}.", res); + return res; + } + + public String add(int a, int b) { + String res = String.valueOf(a + b); + log.info("Finished add, res = {}.", res); + return res; + } + + @Async("traceableExecutor") + public void printStr(String str, int n) { + for (int i = 1; i <= n; i++) { + log.info("Async print {}: {}", i, str); + try { + Thread.sleep(1000); + } catch (InterruptedException ignore) { + } + } + } +} diff --git a/src/main/java/cc/evil/logtest1/service/log/LogFileService.java b/src/main/java/cc/evil/logtest1/service/log/LogFileService.java new file mode 100644 index 0000000..3d9ea45 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/service/log/LogFileService.java @@ -0,0 +1,265 @@ +package cc.evil.logtest1.service.log; + +import cc.evil.logtest1.config.MailConfig; +import cc.evil.logtest1.exception.EvilBaseException; +import cc.evil.logtest1.exception.EvilErrorCode; +import cc.evil.logtest1.exception.InternalServerException; +import cc.evil.logtest1.model.vo.LogFileNameList; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +@Slf4j +@Service +@RequiredArgsConstructor +public class LogFileService { + + // config + private final MailConfig mailConfig; + + /** + * 日期基准路径 + */ + @Value("${logs.file.base-dir:./logs/}") + private String logsFileBaseDir; + + /** + * 日志日期格式 + */ + @Value("${logs.file.date_format:yyyy-MM-dd}") + private final String dateFormat = "yyyy-MM-dd"; + private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormat); + + /** + * 日志命名格式 + */ + @Value("${logs.file.info_prefix:app-info}") + private String infoLogsFileNamePrefix = "app-info"; + + /** + * 获取时间范围内所有日志文件 + */ + public LogFileNameList getLogFiles(LocalDate startTime, LocalDate endTime) { + if (startTime != null && endTime != null && startTime.isAfter(endTime)) { + throw new InternalServerException(EvilErrorCode.INTERNAL_PRECONDITION_ERROR, "开始时间不能晚于结束时间"); + } + + var nw = loadAllFiles(startTime, endTime); + return nw != null ? new LogFileNameList(nw) : new LogFileNameList(); + } + + /** + * 获取日志文件的尾部内容, 支持指定行数; + */ + public List fileTail(int lines) { + var mp = loadAllFiles(null, null); + if (mp == null) return new ArrayList<>(); + List res = new ArrayList<>(); + + List data = loadContentByDate("today", lines, mp); + if (data != null) res.addAll(data); + + if (res.size() >= lines) return res; + mp.remove("today"); + + // 历史日志 + while (!mp.isEmpty() && res.size() < lines) { + String mxDate = ""; + for (var date : mp.keySet()) { + if (mxDate.isBlank() || mxDate.compareTo(date) <= 0) { + mxDate = date; + } + } + data = loadContentByDate(mxDate, lines - res.size(), mp); + if (data != null) res.addAll(data); + mp.remove(mxDate); + } + + return res; + } + + /** + * 将日志打包压缩 + */ + public void writeLogsToZip(LogFileNameList logFileNameList, OutputStream outputStream) { + Path logsBasePath = Paths.get(logsFileBaseDir).toAbsolutePath().normalize(); + Set zipEntryNames = new HashSet<>(); + + try (ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(outputStream, 8192), StandardCharsets.UTF_8)) { + for (var entry : logFileNameList.getLogFilesByDate().entrySet()) { + String dateKey = normalizeDateKey(entry.getKey()); + List fileNames = entry.getValue(); + if (fileNames == null || fileNames.isEmpty()) { + continue; + } + + for (String rawFileName : fileNames) { + String fileName = normalizeFileName(rawFileName); + + Path targetFilePath = "today".equals(dateKey) + ? logsBasePath.resolve(fileName) + : logsBasePath.resolve(dateKey).resolve(fileName); + targetFilePath = targetFilePath.toAbsolutePath().normalize(); + + if (!targetFilePath.startsWith(logsBasePath) || !Files.isRegularFile(targetFilePath)) { + log.warn("尝试访问非法日志文件: {}", targetFilePath); + throw new EvilBaseException(EvilErrorCode.BAD_REQUEST, "日志文件不存在或路径非法: " + fileName); + } + + String zipEntryName = dateKey + "/" + fileName; + if (!zipEntryNames.add(zipEntryName)) { + continue; + } + + zos.putNextEntry(new ZipEntry(zipEntryName)); + Files.copy(targetFilePath, zos); + zos.closeEntry(); + } + } + zos.finish(); + } catch (IOException e) { + throw new InternalServerException(EvilErrorCode.SERVER_FILE_IO_ERROR, "打包日志压缩包失败"); + } + } + + /** + * 加载范围内所有的日志名称 + */ + private Map> loadAllFiles(LocalDate startTime, LocalDate endTime) { + File[] files = new File(logsFileBaseDir).listFiles(); + if (files == null || files.length == 0) { + return null; + } + + LocalDate nowDate = LocalDate.now(); + + Map> mp = new HashMap<>(); + for (File file : files) { + List nw; + if (file.isFile()) { + if (endTime != null && endTime.isBefore(nowDate)) continue; + // 代表当天的日志 + nw = mp.containsKey("today") ? mp.get("today") : new ArrayList<>(); + nw.add(file.getName()); + mp.put("today", nw); + } else { + LocalDate nwDate = LocalDate.parse(file.getName(), formatter); + if (startTime != null && nwDate.isBefore(startTime)) { + continue; + } + if (endTime != null && nwDate.isAfter(endTime)) { + continue; + } + + // 递归一层遍历日志; + nw = new ArrayList<>(); + for (File nxt : Objects.requireNonNull(file.listFiles())) { + if (nxt.isFile()) { + nw.add(nxt.getName()); + } + } + mp.put(file.getName(), nw); + } + } + log.info("成功加载所有日志文件名"); + return mp; + } + + /** + * 添加email + */ + public void addEmails(List emails) { + mailConfig.addEmail(emails); + } + + /** + * 删除email + */ + public void removeEmail(String email) { + mailConfig.removeEmail(email); + } + + /** + * 加载`dataName`这一天的指定行数的日志; + */ + private List loadContentByDate(String dateName, int lines, Map> mp) { + if (!mp.containsKey(dateName)) return null; + + List todayList = mp.get(dateName).stream().filter(name -> name.startsWith(infoLogsFileNamePrefix)).sorted().toList().reversed(), res = new ArrayList<>(); + for (var fileName : todayList) { + String filePath; + if (dateName.equals("today")) { + filePath = String.format("%s/%s", logsFileBaseDir, fileName); + } else { + filePath = String.format("%s/%s/%s", logsFileBaseDir, dateName, fileName); + } + + List fileTailList; + try { + fileTailList = Files.readAllLines(Paths.get(filePath), StandardCharsets.UTF_8); + } catch (IOException e) { + throw new InternalServerException(EvilErrorCode.SERVER_FILE_IO_ERROR, "服务器文件系统异常"); + } + + if (res.size() + fileTailList.size() <= lines) { + res.addAll(fileTailList); + } else { + for (int i = 0; i < fileTailList.size() && res.size() < lines; i++) { + res.add(fileTailList.get(i)); + } + } + } + log.info("成功加载日期{}的日志内容, 行数:{}", dateName, res.size()); + return res; + } + + private String normalizeDateKey(String dateKey) { + if (dateKey == null || dateKey.isBlank()) { + throw new EvilBaseException(EvilErrorCode.BAD_REQUEST, "日期目录不能为空"); + } + + String normalizedDate = dateKey.trim(); + if ("today".equals(normalizedDate)) { + return normalizedDate; + } + + try { + LocalDate.parse(normalizedDate, formatter); + return normalizedDate; + } catch (Exception e) { + throw new EvilBaseException(EvilErrorCode.BAD_REQUEST, "非法日期目录: " + normalizedDate); + } + } + + private String normalizeFileName(String fileName) { + if (fileName == null || fileName.isBlank()) { + throw new EvilBaseException(EvilErrorCode.BAD_REQUEST, "日志文件名不能为空"); + } + + String normalizedFileName = fileName.trim(); + if (normalizedFileName.contains("..") || normalizedFileName.contains("/") || normalizedFileName.contains("\\")) { + throw new EvilBaseException(EvilErrorCode.BAD_REQUEST, "非法日志文件名: " + normalizedFileName); + } + + if (!normalizedFileName.matches("[A-Za-z0-9._-]+\\.log")) { + throw new EvilBaseException(EvilErrorCode.BAD_REQUEST, "仅允许下载 .log 文件: " + normalizedFileName); + } + + return normalizedFileName; + } +} diff --git a/src/main/java/cc/evil/logtest1/service/log/LogPushService.java b/src/main/java/cc/evil/logtest1/service/log/LogPushService.java new file mode 100644 index 0000000..07c0799 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/service/log/LogPushService.java @@ -0,0 +1,44 @@ +package cc.evil.logtest1.service.log; + +import cc.evil.logtest1.exception.EvilBaseException; +import cc.evil.logtest1.exception.EvilErrorCode; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@RequiredArgsConstructor +public class LogPushService { + + // service + private final MailPushService mailPushService; + + public void push(EvilBaseException exception, String ruleKey, long occurrenceCount, boolean immediate, String reason, StackTraceElement[] stackTrace) { + String msgHeader = String.format("[LogTest1 - logs push] ruleKey=%s", ruleKey); + String msgBody = String.format(""" + Push immediate: %s + Rule key: %s + Occurrence count: %d + Reason: %s + Exception type: %s + Business code: %s + Message: %s + Custom message: %s + Stack trace: %s + """, immediate, ruleKey, occurrenceCount, reason, exception.getClass().getName(), exception.getErrorCode().getBusinessCode(), exception.getMessage(), exception.getCustomMsg(), stackTraceToString(stackTrace)); + mailPushService.pushToAll(msgHeader, msgBody); + } + + private Object stackTraceToString(StackTraceElement[] stackTrace) { + if (stackTrace == null) { + return "null"; + } + + StringBuilder sb = new StringBuilder(); + for (StackTraceElement element : stackTrace) { + sb.append(element.toString()).append("\n"); + } + return sb.toString(); + } +} diff --git a/src/main/java/cc/evil/logtest1/service/log/LogService.java b/src/main/java/cc/evil/logtest1/service/log/LogService.java new file mode 100644 index 0000000..45a1913 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/service/log/LogService.java @@ -0,0 +1,169 @@ +package cc.evil.logtest1.service.log; + +import cc.evil.logtest1.exception.EvilBaseException; +import cc.evil.logtest1.exception.InternalServerException; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.converter.StringHttpMessageConverter; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.scheduling.annotation.Scheduled; + +import java.util.concurrent.ConcurrentLinkedDeque; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; + +@Slf4j +@Service +@RequiredArgsConstructor +public class LogService { + + private static final long DEFAULT_WINDOW_SIZE = 60_000L; + private static final long DEFAULT_MAX_WINDOW_SIZE = 5L; + private static final long DEFAULT_WINDOW_RELEASE_TIME = 10 * 60_000L; + private static final String BASE_PACKAGE = "cc.evil.logtest1."; + + // Service + private final LogPushService logPushService; + + // 多线程安全键值对 + private final ConcurrentMap failureWindows = new ConcurrentHashMap<>(); + + /** + * 默认推送策略: + * 1. 普通异常只有到达一定的阈值, 才会出发推送日志的条件, 以避免过多的日志推送 + * 2. 被标记了严重的异常会立即推送日志, 不需要等待窗口 + * 3. 当同一个接口大面积失败的时候, 也会立即推送日志, 不需要等待窗口 + */ + @Async("traceableExecutor") + public void pushLogWithDefaultPolicy(EvilBaseException exception) { + if (exception == null) { + return; + } + + if (shouldPushNow(exception)) { + // 立即推送 + log.info("Push now because setting in exception pushed log for exception: {}, ruleKey: {}.", exception.getClass().getName(), buildRuleKey(exception)); + logPushService.push(exception, buildRuleKey(exception), 1L, true, "pushLogNow=true", exception.getStackTrace()); + return; + } + + evaluateThresholdPolicy(exception); + } + + @Async("traceableExecutor") + public void pushLogWithDefaultPolicy(Exception exception) { + if (exception == null) { + return; + } + + if (exception instanceof EvilBaseException evilBaseException) { + pushLogWithDefaultPolicy(evilBaseException); + return; + } + + // 意料之外的异常立即推送, 并且跟上栈信息, 以便后续排查 + InternalServerException newException = new InternalServerException(cc.evil.logtest1.exception.EvilErrorCode.INTERNAL_SERVER_ERROR, exception.getMessage()); + newException.initCause(exception); + newException.pushLogNow = true; + newException.setStackTrace(exception.getStackTrace()); + + log.info("Push now for unexpected error pushed log for exception: {}, ruleKey: {}.", exception.getClass().getName(), buildRuleKey(newException)); + logPushService.push(newException, buildRuleKey(newException), 1L, true, "unexpected exception", exception.getStackTrace()); + } + + private void evaluateThresholdPolicy(EvilBaseException exception) { + long currentTime = System.currentTimeMillis(); + String ruleKey = buildRuleKey(exception); + FailureWindow window = failureWindows.computeIfAbsent(ruleKey, key -> new FailureWindow(currentTime)); + + long cnt = window.push_back(currentTime, DEFAULT_WINDOW_SIZE); + + if (cnt >= DEFAULT_MAX_WINDOW_SIZE) { + log.info("Push because threshold reached for exception: {}, ruleKey: {}, cnt: {}.", exception.getClass().getName(), ruleKey, cnt); + logPushService.push(exception, ruleKey, cnt, false, "threshold reached", null); + window.clear(); + return; + } + } + + // 定时任务, 定时清理一部分的队列, 防止内存溢出 + @Scheduled(fixedDelayString = "${log.policy.window-cleanup-delay-ms:60000}") + public void cleanupIdleWindows() { + long minTime = System.currentTimeMillis() - DEFAULT_WINDOW_RELEASE_TIME; + + failureWindows.forEach((ruleKey, window) -> { + window.release(minTime); + if (window.shouldRelease(minTime)) { + log.info("Remove idle window for ruleKey: {}, because cleanup schedule.", ruleKey); + failureWindows.remove(ruleKey, window); + } + }); + } + + private boolean shouldPushNow(EvilBaseException exception) { + return exception.isPushLogNow(); + } + + private String buildRuleKey(EvilBaseException exception) { + return extractApplicationOrigin(exception); + } + + // 提取出问题的类和方法, 作为当前日志的来源, 并且只关注我们自己应用的包路径, 避免被第三方库的异常污染 + private String extractApplicationOrigin(Throwable throwable) { + StackTraceElement[] stackTrace = throwable.getStackTrace(); + for (StackTraceElement element : stackTrace) { + if (element.getClassName().startsWith(BASE_PACKAGE)) { + return String.format("%s#%s", element.getClassName(), element.getMethodName()); + } + } + + if (stackTrace.length == 0) { + return throwable.getClass().getSimpleName(); + } + + StackTraceElement fallback = stackTrace[0]; + return String.format("%s#%s", fallback.getClassName(), fallback.getMethodName()); + } + + private static final class FailureWindow { + private final ConcurrentLinkedDeque dq = new ConcurrentLinkedDeque<>(); + private final AtomicInteger cnt = new AtomicInteger(); + private final AtomicLong lstTime = new AtomicLong(); + + private FailureWindow(long windowStartMillis) { + lstTime.set(windowStartMillis); + } + + private long push_back(long currentTime, long windowSize) { + lstTime.set(currentTime); + release(currentTime - windowSize); + dq.offerLast(currentTime); + return cnt.incrementAndGet(); + } + + // 清理掉过期的记录 + private void release(long minTime) { + // 保证操作原子性, 避免在多线程环境下出现计数不准确的情况 + while (true) { + Long time = dq.pollFirst(); + if (time == null || time >= minTime) { + if (time != null) dq.addFirst(time); + break; + } + cnt.decrementAndGet(); + } + } + + private void clear() { + dq.clear(); + cnt.set(0); + } + + private boolean shouldRelease(long minTime) { + return dq.isEmpty() || lstTime.get() < minTime; + } + } +} diff --git a/src/main/java/cc/evil/logtest1/service/log/MailPushService.java b/src/main/java/cc/evil/logtest1/service/log/MailPushService.java new file mode 100644 index 0000000..997e987 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/service/log/MailPushService.java @@ -0,0 +1,49 @@ +package cc.evil.logtest1.service.log; + +import cc.evil.logtest1.config.MailConfig; +import lombok.RequiredArgsConstructor; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.mail.MailException; +import org.springframework.mail.SimpleMailMessage; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Slf4j +@Service +@RequiredArgsConstructor +public class MailPushService { + + // config + private final MailConfig mailConfig; + + // mail sender + private final JavaMailSender mailSender; + + public void pushToAll(String header, String msg) { + if (mailConfig.getToEmailsSet().isEmpty()) { + log.info("No email configured for log pushing, skipping email push."); + return; + } + + SimpleMailMessage emailMessage = new SimpleMailMessage(); + emailMessage.setFrom(mailConfig.getFromEmail()); + emailMessage.setSubject(header); + emailMessage.setText(msg); + for (String toEmail : mailConfig.getToEmailsSet()) { + emailMessage.setTo(toEmail); + try { + mailSender.send(emailMessage); + log.info("Successfully sent log email to {}.", toEmail); + } catch (Exception e) { + log.warn("Failed to send log email to {}.", toEmail, e); + } + } + } +} diff --git a/src/main/java/cc/evil/logtest1/utils/TraceContextUtil.java b/src/main/java/cc/evil/logtest1/utils/TraceContextUtil.java new file mode 100644 index 0000000..2390dd0 --- /dev/null +++ b/src/main/java/cc/evil/logtest1/utils/TraceContextUtil.java @@ -0,0 +1,69 @@ +package cc.evil.logtest1.utils; + +import cc.evil.logtest1.constants.LogConstants; +import org.slf4j.MDC; + +import java.util.UUID; + +public class TraceContextUtil { + + /** + * 生成 TraceId(32位,无横线的UUID) + */ + public static String generateTraceId() { + return UUID.randomUUID().toString().replace("-", ""); + } + + /** + * 生成 SpanId + */ + public static String generateSpanId() { + return UUID.randomUUID().toString().replace("-", "").substring(0, 16); + } + + /** + * 设置 TraceId 到 MDC + */ + public static void setTraceId(String traceId) { + MDC.put(LogConstants.TRACE_ID_MDC_KEY, traceId); + } + + /** + * 设置 SpanId 到 MDC + */ + public static void setSpanId(String spanId) { + MDC.put(LogConstants.SPAN_ID_MDC_KEY, spanId); + } + + /** + * 从 MDC 获取 TraceId + */ + public static String getTraceId() { + return MDC.get(LogConstants.TRACE_ID_MDC_KEY); + } + + /** + * 从 MDC 获取 SpanId + */ + public static String getSpanId() { + return MDC.get(LogConstants.SPAN_ID_MDC_KEY); + } + + /** + * 初始化(如果没有则生成) + */ + public static void init(String traceId) { + if (traceId == null || traceId.isBlank()) { + traceId = generateTraceId(); + } + setTraceId(traceId); + setSpanId(generateSpanId()); + } + + /** + * 清理,防止内存泄漏 + */ + public static void clear() { + MDC.clear(); + } +} diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml new file mode 100644 index 0000000..063a8bd --- /dev/null +++ b/src/main/resources/application.yaml @@ -0,0 +1,16 @@ +spring: + application: + name: LogTest1 + profiles: + active: dev + +log: + push: + mail: + username: ${MAIL_USERNAME:} + password: ${MAIL_PASSWORD:} + host: smtp.qq.com + port: 587 + protocol: smtp + from-email: ${MAIL_FROM_EMAIL:} + to-emails: ${MAIL_TO_EMAILS:} \ No newline at end of file diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..8926959 --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + ${LOG_PATH}/${LOG_NAME}-info.log + + ${LOG_PATH}/%d{yyyy-MM-dd}/${LOG_NAME}-info.%i.log + 10MB + + 7 + 5GB + + + + {"time":"%d{yyyy-MM-dd HH:mm:ss.SSS}","level":"%level","traceId":"%X{traceId}","uid":"%X{uid}","thread":"%thread","logger":"%logger","msg":%msg,"exception":"%ex"}%n + + + + INFO + + + + + + ${LOG_PATH}/${LOG_NAME}-error.log + + ${LOG_PATH}/%d{yyyy-MM-dd}/${LOG_NAME}-error.%i.log + 10MB + + 15 + 3GB + + + + {"time":"%d{yyyy-MM-dd HH:mm:ss.SSS}","level":"%level","traceId":"%X{traceId}","uid":"%X{uid}","thread":"%thread","logger":"%logger","msg":%msg,"exception":"%ex"}%n + + + + WARN + + + + + + ${LOG_PATH}/${LOG_NAME}-audit.log + + ${LOG_PATH}/%d{yyyy-MM-dd}/${LOG_NAME}-audit.%i.log + 10MB + + 30 + 10GB + + + + {"time":"%d{yyyy-MM-dd HH:mm:ss.SSS}","level":"%level","traceId":"%X{traceId}","uid":"%X{uid}","thread":"%thread","logger":"%logger","msg":%msg,"exception":"%ex"}%n + + + + INFO + ACCEPT + DENY + + + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] %highlight(%-5level) %logger{50} - %msg%n + + + + + + + 1024 + + 20 + true + + + + + 512 + + 0 + false + + + + + 256 + 0 + false + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/java/cc/evil/logtest1/LogTest1ApplicationTests.java b/src/test/java/cc/evil/logtest1/LogTest1ApplicationTests.java new file mode 100644 index 0000000..e63d01c --- /dev/null +++ b/src/test/java/cc/evil/logtest1/LogTest1ApplicationTests.java @@ -0,0 +1,25 @@ +package cc.evil.logtest1; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.mail.SimpleMailMessage; +import org.springframework.mail.javamail.JavaMailSender; + +@SpringBootTest +class LogTest1ApplicationTests { + @Autowired + private JavaMailSender mailSender; + + @Test + void testMail() { + SimpleMailMessage msg = new SimpleMailMessage(); + msg.setFrom("2207086349@qq.com"); + msg.setTo("2207086349@qq.com"); +// msg.setTo("3515694291@qq.com"); + msg.setSubject("主题:简单邮件"); + msg.setText("测试邮件内容"); + mailSender.send(msg); + } + +}