sagar k
sagar k

Reputation: 13

spring log4j in XML configuration not able to create the file for log information

log4j2.xml

 <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN" monitorInterval="30">
        <Properties>
            <Property name="LOG_PATTERN">%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %m%n</Property>
            <Property name="APP_LOG_ROOT">/home/sangamnath/Desktop</Property>
        </Properties>
        <Appenders>
            <Console name="Console" target="SYSTEM_OUT" follow="true">
                <PatternLayout pattern="${LOG_PATTERN}" />
            </Console>

            <RollingFile name="appLog"
                fileName="${APP_LOG_ROOT}/SpringBoot2App/application.log"
                filePattern="${APP_LOG_ROOT}/SpringBoot2App/application-%d{yyyy-MM-dd}-%i.log">
                <PatternLayout pattern="${LOG_PATTERN}" />
                <Policies>
                    <SizeBasedTriggeringPolicy size="19500KB" />
                </Policies>
                <DefaultRolloverStrategy max="1" />
            </RollingFile>

        </Appenders>
        <Loggers>

            <Logger name="com.howtodoinjava.app" additivity="false">
                <AppenderRef ref="appLog" />
                <AppenderRef ref="Console" />
            </Logger>

            <Root level="debug">
                <AppenderRef ref="Console" />
            </Root>
        </Loggers>
    </Configuration>




public class BatchApplication {

    public static void main(String[] args) {
            ApplicationContext ctx = SpringApplication.run(BatchApplication.class, args);
            //logger.info("Application started");


        logger.debug("This is a debug message");
        logger.info("This is an info message");
        logger.warn("This is a warn message");
        logger.error("This is an error message");
        logger.fatal("This is a fatal message");


    }

}

}


Pom.xml





<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.shi</groupId>
    <artifactId>rkjobs</artifactId>
    <version>0.0.1</version>
    <name>batch</name>
    <description>drkjobs</description>

    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-batch</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</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>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.batch</groupId>
            <artifactId>spring-batch-test</artifactId>
            <scope>test</scope>
        </dependency>




    </dependencies>

    <profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <build.profile.id>dev</build.profile.id>
                <profileActive>dev</profileActive>
            </properties>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <build.profile.id>test</build.profile.id>
                <profileActive>test</profileActive>
            </properties>
        </profile>
        <profile>
            <id>uat</id>
            <properties>
                <build.profile.id>uat</build.profile.id>
                <profileActive>uat</profileActive>
            </properties>
        </profile>
        <profile>
            <id>local</id>
            <properties>
                <build.profile.id>local</build.profile.id>
                <profileActive>local</profileActive>
            </properties>
        </profile>
    </profiles>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

spring log4j in XML configuration not able to create the file for log information.

the log message is able to print in the console. but In file not able to create in the required folder the printing log file there

the log message is able to print in the console. but In file not able to create in the required folder the printing log file there

Upvotes: 0

Views: 867

Answers (1)

Akshay Jain
Akshay Jain

Reputation: 571

Your logback.xml file should be in this format : 

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>

        <property name="DEV_HOME" value="logs/demo.log" />

        <appender name="FILE-AUDIT"
            class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${DEV_HOME}/debug.log</file>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <Pattern>
                    %d{yyyy-MM-dd HH:mm:ss}- %t - %msg%n
                </Pattern>
            </encoder>

            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- rollover daily -->
                <fileNamePattern>${DEV_HOME}/archived/debug.%d{yyyy-MM-dd}.%i.log
                </fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>100KB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>

        </appender>
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} -
                    %msg%n</pattern>
            </encoder>
        </appender>

        <logger name="com.demo" level="debug" additivity="false">
            <appender-ref ref="FILE-AUDIT" />
        </logger>

        <root level="info">
            <appender-ref ref="STDOUT" />
        </root>

    </configuration>

And the properties should be mentioned in application.properties file if its an spring boot application : 


    logging.level.org.springframework.web: INFO
    logging.level.org.hibernate:TRACE
    endpoints.shutdown.enabled=true

And Logger can be defined in every class where the logs needs to be included in this way : 

    private static final Logger logger = LoggerFactory.getLogger(demo.class);

Upvotes: 1

Related Questions