Логгирование в разные файлы в Spring Boot

279
14 апреля 2019, 02:30

Нужно вести логи приблизительно таким образом:

  • Информационные сообщения сохраняются в одном файлу
  • Сообщения об ошибках сохраняются в другом файле
  • Может быть, каждый день логи нужно сохранять в новой директории, имя которой создается из текущей даты в текстовом формате

Как это можно сделать на спринге?

Answer 1

1) отключаем встроенный логгер спринга

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <artifactId>logback-classic</artifactId>
                <groupId>ch.qos.logback</groupId>
            </exclusion>
            <exclusion>
                <artifactId>log4j-over-slf4j</artifactId>
                <groupId>org.slf4j</groupId>
            </exclusion>
        </exclusions>
    </dependency>

2) добавляем в зависимости какой хотим, к примеру Log4j

3) конфигурирем его как уже душе угодно

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
<Appenders>
    <Console name="CONSOLE" target="SYSTEM_OUT">
        <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <Pattern>%d{HH:mm:ss} [%t] %-5level %c{1} - %msg%n</Pattern>
        </PatternLayout>
    </Console>
    <RollingRandomAccessFile name="FILE" fileName="logs/system.log"
                             filePattern="logs/$${date:yyyy-MM}/system-%d{MM-dd-yyyy}-%i.log.gz">
        <PatternLayout>
            <Pattern>%d %p %c{1.} [%t] - %msg%n</Pattern>
        </PatternLayout>
        <Policies>
            <TimeBasedTriggeringPolicy/>
            <SizeBasedTriggeringPolicy size="50 MB"/>
        </Policies>
    </RollingRandomAccessFile>
    <RollingRandomAccessFile name="DEBUG" fileName="logs/system_debug.log"
                             filePattern="logs/$${date:yyyy-MM}/system_debug-%d{MM-dd-yyyy}-%i.log.gz">
        <MarkerFilter marker="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <Pattern>%d %p %c{1.} [%t] - %msg%n</Pattern>
        </PatternLayout>
        <Policies>
            <TimeBasedTriggeringPolicy/>
            <SizeBasedTriggeringPolicy size="50 MB"/>
        </Policies>
    </RollingRandomAccessFile>
</Appenders>
<Loggers>
    <Logger name="org.genfork" level="info" additivity="true">
        <AppenderRef ref="DEBUG"/>
        <AppenderRef ref="FILE"/>
    </Logger>
    <Logger name="com.owox.unione" level="info" additivity="true">]
        <AppenderRef ref="DEBUG"/>
        <AppenderRef ref="FILE"/>
    </Logger>
    <Logger name="org.springframework" level="info" additivity="true">
        <AppenderRef ref="DEBUG"/>
        <AppenderRef ref="FILE"/>
    </Logger>
    <Logger name="org.hibernate" level="info" additivity="true">
        <AppenderRef ref="DEBUG"/>
        <AppenderRef ref="FILE"/>
    </Logger>
    <Logger name="org.apache" level="info" additivity="true">
        <AppenderRef ref="DEBUG"/>
        <AppenderRef ref="FILE"/>
    </Logger>
    <Root level="info">
        <AppenderRef ref="CONSOLE"/>
    </Root>
</Loggers>

READ ALSO
Передача значения с одного окна в другое в javafx

Передача значения с одного окна в другое в javafx

Делаю игру по типу монополии, и возник вопрос над которым уже сижу пару днейВообщем, при создании новой игры (нажатия кнопки "Новая игра"),...

209
как сделать программу в full screen Javafx?

как сделать программу в full screen Javafx?

Есть ли способ сделать в javafx всё приложение в полноэкранном режиме? проблема заключается в том, что когда вызываю смену сцены Applicationstage

227
Использование метода Android KTX в Java коде

Использование метода Android KTX в Java коде

Можно ли каким-либо образом использовать метод Contexttoast(text: CharSequence, duration: Int = Toast

185
Не работает удаление в hibernate

Не работает удаление в hibernate

Не работает subcompetenceRepositorydelete(id)

211