@Override public void rotate(RotationPolicy policy, LocalDateTime dateTime) { boolean acquired = rotationLock.tryLock(); if (!acquired) { config.getCallback().onConflict(policy, dateTime); } else { try { unsafeRotate(policy, dateTime); } catch (Exception error) { String message = String.format("rotation failure {dateTime=%s}", dateTime); RuntimeException extendedError = new RuntimeException(message); config.getCallback().onFailure(policy, dateTime, null, extendedError); } finally { rotationLock.unlock(); } } }
@Override public void run() { // Get file size. LocalDateTime now = config.getClock().now(); File file = config.getFile(); long byteCount; try { byteCount = file.length(); } catch (Exception error) { String message = String.format("failed accessing file size (file=%s)", file); Exception extendedError = new IOException(message, error); config.getCallback().onFailure(SizeBasedRotationPolicy.this, now, file, extendedError); return; } // Rotate if necessary. if (byteCount > maxByteCount) { LOGGER.debug("triggering {byteCount={}}", byteCount); config.getCallback().onTrigger(SizeBasedRotationPolicy.this, now); rotatable.rotate(SizeBasedRotationPolicy.this, now); } } };
@Override public void run() { getLogger().debug("triggering {triggerDateTime={}}", triggerDateTime); config.getCallback().onTrigger(TimeBasedRotationPolicy.this, triggerDateTime); rotatable.rotate(TimeBasedRotationPolicy.this, triggerDateTime); start(rotatable); } };
config.getCallback().onSuccess(policy, dateTime, null); return; String message = String.format("rename failure {file=%s, rotatedFile=%s}", config.getFile(), rotatedFile); IOException error = new IOException(message); config.getCallback().onFailure(policy, dateTime, rotatedFile, error); return; asyncCompress(policy, dateTime, rotatedFile, config.getCallback()); return; config.getCallback().onSuccess(policy, dateTime, rotatedFile);