void (boolean hasJustReadSomething) { long sleepStart = mySleepStart.get(); if (sleepStart < 0) return; long now = System.currentTimeMillis(); if (hasJustReadSomething) { mySleepStart.set(now); } else if (TimeUnit.MILLISECONDS.toMinutes(now - sleepStart) >= 2 && mySleepStart.compareAndSet(sleepStart, -1)) { // report only once LOG.warn("Process hasn't generated any output for a long time.\n" + "If it's a long-running mostly idle daemon process, consider overriding OSProcessHandler#readerOptions with" + " 'BaseOutputReader.Options.forMostlySilentProcess()' to reduce CPU usage.\n" + "Command line: " + StringUtil.trimLog(StringUtil.notNullize(myCommandLine), 1000), myProcessStart); } }