Подтвердить что ты не робот

Log4j.properties в Spring загрузке

Как загрузить пользовательский файл Log4j.properties в Spring boot

Мой код в application.properties находится здесь

logging.file=E:/Apps_Tek/apps-webservices-log/apps-webservices.log
logging.level.*=INFO
logging.config=log4j.properties

Мой код в log4j.properties находится здесь

log4j.rootLogger=INFO,ConsoleAppender,FileAppender

log4j.appender.ConsoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.ConsoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.ConsoleAppender.layout.ConversionPattern=%-7p %d [%t] %c [%X{userName}] [%X{accessToken}] - %m%n

log4j.appender.FileAppender=org.apache.log4j.RollingFileAppender
log4j.appender.FileAppender.File=E:/Apps_Tek/apps-webservices-log/apps-webservices.log
log4j.appender.FileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.FileAppender.layout.ConversionPattern=%-7p %d [%t] %c [%X{userName}] [%X{accessToken}] - %m%n

Но я не получаю ожидаемого результата, т.е. Spring boot не загружает файл log4j.properties. Spring boot имеет собственный журнал регистрации по умолчанию.

Файл log4j.properties находится в src/main/resources

Мой вопрос заключается в том, как сопоставить файл log4j.properties с свойством logging.config в application.properties, если он находится в src/main/resources.

Просьба указать все необходимые изменения.

Спасибо за любую помощь заранее.

4b9b3361

Ответ 1

Если вы хотите, чтобы spring boot использовал log4j вместо своего собственного журнала регистрации по умолчанию (logback), вам необходимо исключить регистрацию по умолчанию и включить log4j-зависимость для загрузки spring в pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j</artifactId>
</dependency>   

этот способ будет искать ваш файл log4j.properties, расположенный в src/main/resources.

Также, если вы хотите использовать свойства, определенные в вашем приложении application.properties внутри файла log4j.properties

например, вы хотите иметь log.file.path, определенный в application.properties, и использовать его на log4j.properties

Затем вам нужно определить фильтрацию внутри pom.xml:

<filters>
    <filter>src/main/resources/application.properties</filter>
</filters>
<resources>
    <resource>
        <directory>src/main/resources</directory>
        <includes>
            <include>log4j.properties</include>
        </includes>         
        <filtering>true</filtering>
    </resource>
</resources>

Таким образом, вы можете:

log4j.appender.file.File=${log.file.path}/${project.artifactId}.log

в вашем log4j.properties файле

Ответ 2

Чтобы исключить ведение журнала по умолчанию и включить зависимость log4j для весенней загрузки в ваш файл pom.xml:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>

если вы хотите использовать свойства log4j, определенные в вашем application.properties внутри файла log4j.properties, необходимо добавить свойство ниже в файле application.properties.

logging.config = src/main/resources/log4j2.properties

Тогда весенняя загрузка прочитает свойства из файла log4j2.properties

В файле log4j2.properties добавьте следующие свойства

name=PropertiesConfig
appenders = console, file

appender.console.type = Console
appender.console.name = ConsoleAppender
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{MM:dd HH:mm:ss.SSS} [%t] [%level] [%logger{36}] - %msg%n

appender.file.type = File
appender.file.name = FileAppender
appender.file.fileName=/home/ubuntu/application.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern= %d{MM:dd HH:mm:ss.SSS} [%t] [%level] [%logger{36}] - %msg%n

loggers=file
logger.file.name=com.project
logger.file.level = debug
logger.file.appenderRefs = file
logger.file.appenderRef.file.ref = FileAppender

rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = ConsoleAppender

Есть ли какая-либо другая работа, которая не требует указывать 'logging.config = src/main/resources/log4j2.properties' внутри файла application.properties..?

Примечание: я использую загрузочную версию Spring 2.1.3.

Ссылка: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html

Ответ 3

Я предполагаю, что ваш файл pom.xml не настроен на включение правильной зависимости log4j. Если вы это сделаете, он должен автоматически работать. См. Их пример в spring-boot-sample-actuator-log4j. Их проект включает в себя артефакт spring -boot-starter-log4j, который затем должен позволять выводить log4j.properties из текущего местоположения src/main/resources, и вам больше не нужны записи в ваших свойствах. *. Возможно также, что вам нужно исключить их spring -boot-startter-logging, поскольку я вижу, что они это делают. Если это не помогает, отправьте свой файл POM в том месте, где я это вижу. Пожалуйста, дайте мне знать, если это сработает для вас.