logback icon indicating copy to clipboard operation
logback copied to clipboard

Header not written for RollingFileAppender since version 1.5.7

Open balrok opened this issue 1 year ago • 0 comments

In 85bed93af the encoderInit()-method was moved from setOutputStream() to start(). The RollingFileAppender will not call start() once a new file is rolled. Therefore these new files won't get a header anymore. We are using logback to create a binary file which requires a header. Due to this change, only the first file gets the header (because start() calls encoderInit()). But every other file created by RollingFileAppender is without the header.

As a hotfix it works to override the setOutputStream-method with:

public void setOutputStream(final OutputStream outputStream) {
	super.setOutputStream(outputStream);
	if (isStarted()) {
		try {
			getOutputStream().write(getEncoder().headerBytes());
		} catch (final IOException e) {
			addWarn("Konnte etem-Header nicht schreiben. " + e.getMessage());
		}
	}
}

The isStarted()-check is needed to avoid, that the header is written twice in the beginning.

balrok avatar Sep 09 '24 11:09 balrok