Prateek Singh Asked: 2023-08-19 01:29:04 +0800 CST2023-08-19 01:29:04 +0800 CST 2023-08-19 01:29:04 +0800 CST 有没有办法在 Spring Scheduler 启动时(例如:调度程序启动)仅打印一次日志,以避免一次又一次打印相同的日志? 772 我想记录我的 Spring 调度程序是否启动、启动并运行,我无法将日志放入我的 @Scheduled 方法中,因为它将在每次执行时继续打印。有什么办法可以做到吗? spring 1 个回答 Voted Best Answer Julian 2023-08-19T03:25:53+08:002023-08-19T03:25:53+08:00 这很容易。 @Sl4j public class MySchedulerClass { private boolean logDone = false; @Scheduled(...) public void executeScheduler() { if (!logDone) { log.info("About to start scheduled job for the first time"); logDone = true; } // your business logic here } 当然,如果您的应用程序由于某种原因在调度程序处于活动状态期间重新启动,您将再次收到此日志条目,在我看来这是一件好事。如果您不希望发生这种情况,则必须将其保留logDone在应用程序外部的某个位置,例如数据库。 我们有一个更有趣的要求,即仅在工作开始时但每天都显示这一点。我们通过 chron 调度程序重置logDone执行任务的调度程序来解决这个问题。
这很容易。
当然,如果您的应用程序由于某种原因在调度程序处于活动状态期间重新启动,您将再次收到此日志条目,在我看来这是一件好事。如果您不希望发生这种情况,则必须将其保留
logDone
在应用程序外部的某个位置,例如数据库。我们有一个更有趣的要求,即仅在工作开始时但每天都显示这一点。我们通过 chron 调度程序重置
logDone
执行任务的调度程序来解决这个问题。