Log4j.properties in Spring boot

后端 未结 3 1959
青春惊慌失措
青春惊慌失措 2020-12-08 03:16

How to load Custom Log4j.properties file in Spring boot

My code in application.properties is here

logging.file=E:/Apps_Tek/apps-webservices-log/apps-         


        
相关标签:
3条回答
  • 2020-12-08 03:39

    My guess is that your pom.xml file is not set up to include the correct log4j dependency. If you do that it should automatically work. See their example at spring-boot-sample-actuator-log4j. Their project includes the artifact spring-boot-starter-log4j which should then allow your log4j.properties to be picked up from the current src/main/resources location and you should no longer need the logging.* entries in your properties. It may also be possible that you need to exclude their spring-boot-starter-logging as I see they are doing that as well. If this does not seem to resolve it please post your POM file in a location I can see it. Please let me know if this works for you.

    0 讨论(0)
  • 2020-12-08 03:46

    If you want spring boot to use log4j instead of its own default logging (logback) then you have to exclude default logging and include the log4j dependency for spring boot in your 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>   
    

    that way is going to look for your log4j.properties file located in src/main/resources.

    Also if you wish to use properties defined in you application.properties inside the log4j.properties file

    for example, you want to have log.file.path defined in your application.properties and use it on log4j.properties

    Then you have to define filtering inside your 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>
    

    That way you can have:

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

    in your log4j.properties file

    0 讨论(0)
  • 2020-12-08 03:49

    To exclude default logging and include the log4j dependency for spring boot in your 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>
    

    if you wish to use log4j properties defined in you application.properties inside the log4j.properties file need to add below property in application.properties file.

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

    Then spring boot will read the properties from log4j2.properties file

    In log4j2.properties file add the below 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
    

    Is there any other work around which doesnot require to specify 'logging.config = src/main/resources/log4j2.properties' inside application.properties file..?

    Note : Spring boot version i am using is 2.1.3.RELEASE

    Reference : https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html

    0 讨论(0)
提交回复
热议问题