Я пытаюсь ограничить размер журнала в файле Locakback.xml до 2 МБ перед загрузкой файла на сервер, но, тем не менее, размер файла не ограничивается 2 МБ, а всегда дает фактический размер файла, из-за которого я исключение из памяти когда-нибудь. Поэтому мое требование уменьшить размер файла до 2 МБ перед загрузкой на сервер. Ниже мой код для файла Logback.xml и код для загрузки на сервер
Logback.xml
<configuration>
<property name="LOG_DIR" value="/sdcard/logback" />
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/gatewaylog.txt</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>gatewaylog.%i.log.txt</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>2</maxIndex>
<totalSizeCap>2MB</totalSizeCap>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>2MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<root level="TRACE">
<appender-ref ref="FILE" />
</root>
</configuration>
Код для загрузки на сервер
File logbackFile = new File(Environment.getExternalStorageDirectory(), "logback/gatewaylog.txt");
if (logbackFile.length() == 0) {
view.hideLogsExportProgress();
return;
}
RequestBody logBackRequestFile = RequestBody.create(MediaType.parse("text/plain"), logbackFile);
MultipartBody.Part logBackMultipart = MultipartBody.Part.createFormData("file", logbackFile.getName(), logBackRequestFile);
compositeDisposable.add(apiRepository.uploadLogFile(logBackMultipart, Constants.GATEWAY).observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(status -> {
view.hideLogsExportProgress();
if (status != null) {
view.showError("Successfully logs uploaded to cloud");
} else {
view.showError("Failed to uploaded logs to cloud. Try again.");
}
}, throwable -> {
view.hideLogsExportProgress();
view.showError("Server not reachable");
throwable.printStackTrace();
}));