Настройка журнала загрузки Jhipster Spring

Я создаю приложение с помощью JHipster. Есть ли простой способ настроить приложение для создания файлов журнала для каждого отдельного дня? Я пробовал все в одном файле, но он стал большим, и это не очень хорошая практика. Я сделал это, добавив эту часть в конец моей команды запуска сервера:

>> console.info &

Logback-spring.xml:

<appender name = "FILE" class = "ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>logs/log-file.%d{yyyy-MM-dd}.log</fileNamePattern>
        <maxHistory>90</maxHistory>
    </rollingPolicy>
    <encoder>
        <charset>utf-8</charset>
        <Pattern>%d %-5level [%thread] %logger{0}: %msg%n</Pattern>
    </encoder>
</appender>

<appender name = "ASYNC" class = "ch.qos.logback.classic.AsyncAppender">
    <queueSize>512</queueSize>
    <appender-ref ref = "FILE"/>
</appender>


<logger name = "javax.activation" level = "WARN"/>
<logger name = "javax.mail" level = "WARN"/>
<logger name = "javax.xml.bind" level = "WARN"/>
<logger name = "ch.qos.logback" level = "WARN"/>
<logger name = "com.codahale.metrics" level = "WARN"/>
<logger name = "com.ryantenney" level = "WARN"/>
<logger name = "com.sun" level = "WARN"/>
<logger name = "com.zaxxer" level = "WARN"/>
<logger name = "io.undertow" level = "WARN"/>
<logger name = "io.undertow.websockets.jsr" level = "ERROR"/>
<logger name = "org.ehcache" level = "WARN"/>
<logger name = "org.apache" level = "WARN"/>
<logger name = "org.apache.catalina.startup.DigesterFactory" level = "OFF"/>
<logger name = "org.bson" level = "WARN"/>
<logger name = "org.elasticsearch" level = "WARN"/>
<logger name = "org.hibernate.validator" level = "WARN"/>
<logger name = "org.hibernate" level = "WARN"/>
<logger name = "org.hibernate.ejb.HibernatePersistence" level = "OFF"/>
<logger name = "org.springframework" level = "WARN"/>
<logger name = "org.springframework.web" level = "WARN"/>
<logger name = "org.springframework.security" level = "WARN"/>
<logger name = "org.springframework.cache" level = "WARN"/>
<logger name = "org.thymeleaf" level = "WARN"/>
<logger name = "org.xnio" level = "WARN"/>
<logger name = "springfox" level = "WARN"/>
<logger name = "sun.rmi" level = "WARN"/>
<logger name = "liquibase" level = "WARN"/>
<logger name = "LiquibaseSchemaResolver" level = "INFO"/>
<logger name = "sun.rmi.transport" level = "WARN"/>

<!-- https://logback.qos.ch/manual/configuration.html#shutdownHook and https://jira.qos.ch/browse/LOGBACK-1090 -->
<shutdownHook class = "ch.qos.logback.core.hook.DelayingShutdownHook"/>

<contextListener class = "ch.qos.logback.classic.jul.LevelChangePropagator">
    <resetJUL>true</resetJUL>
</contextListener>

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
1 548
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Сконфигурируйте RollingFileAppender в logback-spring.xml вместо использования ConsoleAppender. См. https://logback.qos.ch/manual/appenders.html#RollingFileAppender

Logback-spring.xml, созданный JHipster, содержит всю конфигурацию продукта, вам просто нужно раскомментировать его.

<!-- The FILE and ASYNC appenders are here as examples for a production configuration -->
<appender name = "FILE" class = "ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
        <maxHistory>90</maxHistory>
    </rollingPolicy>
    <encoder>
        <charset>utf-8</charset>
        <Pattern>%d %-5level [%thread] %logger{0}: %msg%n</Pattern>
    </encoder>
</appender>
<appender name = "ASYNC" class = "ch.qos.logback.classic.AsyncAppender">
    <queueSize>512</queueSize>
    <appender-ref ref = "FILE"/>
</appender>
<root level = "${logging.level.root}">
    <appender-ref ref = "ASYNC"/>
</root>

Я сделал это, и когда я запустил сервер в режиме разработки из eclipse, он создал файл на сегодняшний день, но он все время пуст

user3364181 28.09.2018 13:06

Забудем про eclipse, он работает с mvnw или gradlew или запускает исполняемую войну? А еще я думал, что вы ищете решение для продуктов не в dev, потому что ваш вопрос не имеет большого смысла в dev.

Gaël Marziou 28.09.2018 13:12

Да конечно просто захотелось потестить. Итак, я создал файл .war с помощью maven. Я запустил его, и он все еще создает файл журнала, но все записывает в консоль. Как мне перенаправить вывод в файлы журнала?

user3364181 28.09.2018 13:22

Правильная конфигурация закомментирована в созданном вами файле logback-spring.xml, вам просто нужно раскомментировать его github.com/jhipster/jhipster-sample-app/blob/master/src/main‌ /…, не забудьте appender-ref

Gaël Marziou 28.09.2018 14:01

Как вы можете видеть в отредактированном комментарии, это именно то, что я сделал, но он по-прежнему ничего не записывает в файлы журнала, кроме как в консоли. Стоит ли запускать программу с дополнительной командой?

user3364181 28.09.2018 14:03

Я не вижу appender-ref на корневом уровне в вашем вопросе, как в моем ответе

Gaël Marziou 28.09.2018 14:09

вы можете использовать этот код в своем собственном logback.xml

<appender name = "dailyRollingFileAppenderError" class = "ch.qos.logback.core.rolling.RollingFileAppender">
    <File>${DEV_HOME}/error.log</File>
    <encoder class = "ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>%d [%-5level] %logger{36} - %msg%n</Pattern>
    </encoder>
    <rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- daily rollover -->
        <FileNamePattern>${DEV_HOME}/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>10MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
</appender>


<root level = "error">
    <appender-ref ref = "dailyRollingFileAppenderError"/>
</root>

Другие вопросы по теме