Обратный вход 1.2.3 журналы отсекаются по середине строки

#java #logging #logback #slf4j #vert.x

Вопрос:

Я создаю искатель данных на Java. Вот некоторая информация:
Проект: Gradle.
Структура: Vert.x 4.0.3.
Версия для входа в систему: 1.2.3.
Версия slf4j: 1.7.30.
Использование Lombok
MacBook Pro 15″ середина 2014 года.
Big Sur v 11.2.3.
Хранение около 50% бесплатно.
Память примерно на 50% свободна в использовании.
Версия Java: Java 11.

Мое приложение настроено так, чтобы запросы HTTP GET вызывались повторно — в идеале навсегда.
И все журналы регистрируются в терминале/консоли, а также в файле журнала, сгенерированном logback.xml.
Если я запущу свое приложение за ночь, то журнал будет отключен в середине строки.
После линии разреза журнала нет, даже если в терминале/консоли есть все журналы.

Вот мой logback.xml.

 <?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds" debug="true">

  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %magenta(%-4relative) --- [ %thread{10} ] %cyan(%logger{20}) : %msg%n </pattern>
    </encoder>
  </appender>

  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--    <file>/var/log/crawler/crawler.log</file>-->
    <file>crawler.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--      <fileNamePattern>/var/log/crawler/crawler-%d{yyyy-MM-dd}.log</fileNamePattern>-->
      <fileNamePattern>crawler-%d.log</fileNamePattern>
      <maxHistory>30</maxHistory>
    </rollingPolicy>

    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-4relative --- [ %thread{10} ] %logger{35} - %msg%n</pattern>
    </encoder>
  </appender>

  <logger name="io.netty" level="warn"/>
  <logger name="io.vertx" level="info"/>
  <logger name="com.hazelcast" level="info"/>
  <logger name="kr.co.evcloud.crawler" level="debug"/> <!-- 개발중에 편하게 쓰려고 변경하였습니다. -->

  <root level="debug">
    <appender-ref ref="CONSOLE"/> <!-- Console에 로그를 출력하고자 할 때 사용 -->
    <appender-ref ref="FILE"/> <!-- File로 로그를 남기고자 할 때 사용 -->
  </root>
</configuration>
 

Используется обратный вход TimeBasedRollingPolicy , который в полночь переносит все текущие журналы в новый файл журнала с предыдущей датой.

В двух случаях был оставлен следующий журнал.

 2021-05-27 00:13:49.019 DEBUG 14038900 --- [ vert.x-eventloop-thread-1 ] k.c.e.crawler.service.MeDataService - ### [환경부 API] charger_id: 200949 새 상태: 2, 이전 상태: 9
2021-05-27 00:13:49.019 DEBUG 14038900 --- [ vert.x-eventloop-thread-1 ] k.c.e.crawler.service.MeDataService - ### [환경부 API] charger_id: 200958 새 상태: 2, 이전 상태: 9
2021-05-27 00:13:49.020 DEBUG 1403
 

Выше есть три бревна: 2 из которых закончены, одно из которых отрезано.
И хотя на моем терминале хранятся все журналы с 00:13:49 до настоящего времени, файл журнала не обновляется.

Есть какие-нибудь догадки относительно того, почему это происходит?

Заранее спасибо.

Комментарии:

1. Я забыл упомянуть, что я пробовал. Я запустил свое приложение и изменил даты и время на своем ноутбуке. Я запустил приложение тремя способами: один с помощью Intellij run, один с помощью fat jar в терминале IntelliJ и один с помощью fat jar в терминале. При смене дат и времени работы ноутбука не было отключено никаких журналов. Так что я застрял…

Ответ №1:

Я нашел проблему.
Я использую идею IntelliJ.

 IntelliJ IDEA 2021.1.1 (Community Edition)
Build #IC-211.7142.45, built on April 30, 2021
Runtime version: 11.0.10 9-b1341.41 x86_64
 

Когда я открыл файлы журналов с вырезанными строками в VSCode, все журналы были показаны.
IntelliJ, похоже, показывает только часть больших файлов .log.

Если кто-то наткнется на то, что не видит ваши журналы или обрезает строки журналов, попробуйте открыть файл в другой среде разработки или программе.