How to create seperate log file for each batches running in a single project? - spring-boot

Working on Spring boot and spring scheduler project to run multiple batches.
Here all batches information I am writing into one log file.(One log file got created)
Now I need to write information in separate log files for different batches i.e no. of batches = that many no. of log files.
Note that I have only one main class as I am using spring boot and all batches comes under only one package, only one service for all batches and one repository for all batches.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
<Properties>
<Property name="LOG_PATTERN">$${ctx:filename} %d %p %c{1.} [%t] %m%n
</Property>
<Property name="APP_LOG_ROOT">C:/job-logs/claims-dms/</Property>
<Property name="APP_LOG_BACK_ROOT">C:/job-logs/claims-dms/back/</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="${LOG_PATTERN}" />
</Console>
<RollingFile name="appLog" fileName="${APP_LOG_ROOT}claims-dms.log"
filePattern="${APP_LOG_BACK_ROOT}claims-dms-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="${LOG_PATTERN}" />
<Policies>
<SizeBasedTriggeringPolicy size="500MB" />
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
<DefaultRolloverStrategy max="1" />
</RollingFile>
</Appenders>
<Loggers>
<Logger name="com.bct" additivity="false" level="all">
<AppenderRef ref="appLog" />
<AppenderRef ref="Console" />
</Logger>
<Logger name="org.hibernate.SQL" additivity="false" level="all">
<AppenderRef ref="appLog" />
<AppenderRef ref="Console" />
</Logger>
<Logger name="org.hibernate.type.descriptor.sql" additivity="false"
level="all">
<AppenderRef ref="appLog" />
<AppenderRef ref="Console" />
</Logger>
<Logger name="org.springframework.jdbc.core" additivity="false"
level="all">
<AppenderRef ref="appLog" />
<AppenderRef ref="Console" />
</Logger>
<Root>
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>

you can put your batchname in MDC from where your job is getting triggerd and use that key in logback.xml
#Scheduled
public void scheduleJob(){
MDC.put("jobname", jobName);
// other stuff
}
and logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
<!-- in the absence of the class attribute, it is assumed that the
desired discriminator type is
ch.qos.logback.classic.sift.MDCBasedDiscriminator -->
<discriminator>
<key>jobName</key>
<defaultValue>batch-service</defaultValue>
</discriminator>
<sift>
<appender name="FILE-${jobName}" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${server.docroot}/logs/${jobName}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${server.docroot}/logs/${jobName}.%i.log</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>5</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>100MB</maxFileSize>
</triggeringPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d [%thread] %level %mdc %logger{35} - %msg%n</pattern>
</layout>
</appender>
</sift>
</appender>
<root level="INFO">
<appender-ref ref="SIFT" />
</root>
</configuration>
now for each job a new log file will be created.

Related

spring cloud set logging.level does not work in application.yml(I have a logback-spring.xml, too)

these screenshot are my configurations about logback
logback-spring.xml
<root level="info">
<appender-ref ref="FILE"/>
<appender-ref ref="STDOUT"/>
</root>
application.properties
logging.file.path=./logs
logging.level.cn.hsa=debug
logging.level.root=info
logging.level.org.springframework.web=trace
It’s not working when i change logging.level.root to debug or others in application.properties, it's always use this configure in logback-spring.xml
I read spring source code, logback-srping.xml loaded before application.properties
but i dont know why these configures were not override
You can define something like this if you want to customize:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<springProperty scope="context" name="LOG_PATH" source="app.log.path"
defaultValue="your_log_path" />
<timestamp key="dateStamp" datePattern="yyyy-MM-dd" />
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
</Pattern>
</encoder>
</appender>
<springProfile name="test,prod">
<appender name="Access-FileAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${LOG_PATH}/logs/xyz.%d{yyyy-MM-dd}.log
</fileNamePattern>
<!-- keep 90 days' worth of history -->
<maxHistory>90</maxHistory>
</rollingPolicy>
<encoder>
<Pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
</Pattern>
</encoder>
</appender>
<appender name="Async-Access-FileAppender" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="Access-FileAppender" />
</appender>
</springProfile>
<root>
<level value="INFO" />
<appender-ref ref="consoleAppender" />
</root>
<springProfile name="local">
<logger name="com.xxx.yyy" level="DEBUG" additivity="false">
<appender-ref ref="consoleAppender" />
</logger>
</springProfile>
<springProfile name="dev">
<logger name="com.xxx.yyy" level="DEBUG" additivity="false">
<appender-ref ref="consoleAppender" />
</logger>
</springProfile>
<springProfile name="test,prod">
<logger name="com.xxx.yyy" level="INFO" additivity="true">
<appender-ref ref="consoleAppender" />
</logger>
</springProfile>
</configuration>
As you can see, test/prod have the similar logging configuration. Similarly, you can configure for local and dev as well.
Hope this helps.

Logging system failed to initialize using configuration from 'null' java.lang.IllegalStateException: Logback configuration error detected:

I want to use a common xml in my logback-spring.xml? how to include the xml in logback-spring.xml without getting an error. I got that to include an xml in our logback-spring.xml we need to use but somehow this is not working for me. I have invested so much time but no results.
https://dennis-xlc.gitbooks.io/the-logback-manual/content/en/chapter-3-configuration/configuration-file-syntax/file-inclusion.html
logback-common.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<property name="LOGS" value="./logs" />
<appender name="Console"
class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
</Pattern>
</layout>
</appender>
<appender name="RollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS}/${NAME}.log</file>
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily and when the file reaches 10 MegaBytes -->
<fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</root>
<logger name="com.ms" level="trace" additivity="false">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</logger>
<logger name="org.springframework.core.env.PropertySourcesPropertyResolver" level="trace" additivity="true">
</logger>
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan = "true">
<property resource ="application.yml"/>
<springProperty name="NAME" source="spring.application.name" />
<include resource="logback-common.xml"/>
</configuration>
application.yml
spring:
application:
name: Logbacking-service
The file which has to be used inside the logback-spring.xml must not contain the <xml> tag. The file should be like below. The <included> tag must be used in file which has to be loaded inside another file.
<included>
<property name="LOGS" value="./logs" />
<property resource ="application.yml"/>
<springProperty name="NAME" source="spring.application.name" />
<appender name="Console"
class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
</Pattern>
</layout>
</appender>
<appender name="RollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS}/${NAME}.log</file>
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily and when the file reaches 10 MegaBytes -->
<fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</root>
<logger name="com.ms" level="trace" additivity="false">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</logger>
<logger name="org.springframework.core.env.PropertySourcesPropertyResolver" level="trace" additivity="true">
</logger>
</included>

How to include a custom xml in logback-spring.xml?

I have created a common log back-common.xml. I want to use this file in another file - logback.spring.xml. Please help me with how I can use this efficiently.
As of now, the application is starting but logs are not printed in the console, and logs are not populated to log file. Please help. Don't mark this as duplicate, because I have tried almost everything and I have invested 2 days in this. Other questions related to the same do not have a valid answer attached.
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property resource ="application.yml"/>
<springProperty name="NAME" source="spring.application.name" />
<include file="logback-common.xml"/>
</configuration>
logback-common.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<property name="LOGS" value="./logs" />
<appender name="Console"
class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
</Pattern>
</layout>
</appender>
<appender name="RollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS}/${NAME}.log</file>
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily and when the file reaches 10 MegaBytes -->
<fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- LOG everything at INFO level -->
<root level="info">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</root>
<!-- LOG "com.baeldung*" at TRACE level -->
<logger name="com.ms" level="trace" additivity="false">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</logger>
<logger name="org.springframework.core.env.PropertySourcesPropertyResolver" level="trace" additivity="true">
</logger>
</configuration>
application.yml
spring:
application:
name: Logbacking-service
You need to use below to "resource" instead of "file" for your child configuration ( as it is present in classpath)
<include resource="logback-common.xml"/>
You would see information printed on console when logback is able to find and load all the configuration file as logback gets bootstrapped at very initial stage.
Update:- Regarding the error you shared - you also need to use included tag in your child configuration file instead of configuration tag. Tested below configurations and it's working fine for me.
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property resource ="application.yml"/>
<springProperty name="NAME" source="spring.application.name" />
<include resource="logback-common.xml"/>
</configuration>
And the child configuration as
logback-common.xml
<?xml version="1.0" encoding="UTF-8"?>
<included>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<property name="LOGS" value="./logs" />
<appender name="Console"
class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
</Pattern>
</layout>
</appender>
<appender name="RollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS}/${NAME}.log</file>
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily and when the file reaches 10 MegaBytes -->
<fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- LOG everything at INFO level -->
<root level="info">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</root>
<logger name="com.ms" level="trace" additivity="false">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</logger>
<logger name="org.springframework.core.env.PropertySourcesPropertyResolver" level="trace" additivity="true">
</logger>
</included>

Spring boot logback can not logging to file on kubernetes multiple pods

similar when start application the multi pods on k8s (2 pods) It's can write logging file to that's pods, So when next day i'm try request to service for logging console can show normally but on logging file i'm found only one pod can write logging to file but another pods can not write logging to file.
Please help me to solve this point
This is my logback.xml file
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<property name="FILE_LOG_PATTERN"
value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<property name="LOG_LOCATION" value="logs" />
<property name="LOG_ARCHIVED_FOLDER" value="archived" />
<property name="LOG_FILE" value="my-log-app" />
<property name="maxFileSize" value="100MB" />
<property name="totalSizeCap" value="60GB" />
<property name="maxHistory" value="120" />
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
<!-- To enable JMX Management -->
<jmxConfigurator/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<charset>UTF-8</charset>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<appender name="FILE_ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_LOCATION}/${LOG_FILE}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_LOCATION}/${LOG_ARCHIVED_FOLDER}/${LOG_FILE}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- each archived file, size max 100MB -->
<maxFileSize>${maxFileSize}</maxFileSize>
<!-- total size of all archive files, if total size > 60GB, it will delete old archived file -->
<totalSizeCap>${totalSizeCap}</totalSizeCap>
<!-- 120 days to keep -->
<maxHistory>${maxHistory}</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<charset>UTF-8</charset>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<appender name="ASYNC_CONSOLE" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold> <!-- default 20, means drop lower event when has 20% capacity remaining -->
<appender-ref ref="CONSOLE" />
<queueSize>1</queueSize> <!-- default 256 -->
<includeCallerData>false</includeCallerData><!-- default false -->
<neverBlock>true</neverBlock><!-- default false, set to true to cause the Appender not block the application and just drop the messages -->
</appender>
<appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold> <!-- default 20, means drop lower event when has 20% capacity remaining -->
<appender-ref ref="FILE_ROLLING" />
<queueSize>1</queueSize> <!-- default 256 -->
<includeCallerData>false</includeCallerData><!-- default false -->
<neverBlock>false</neverBlock><!-- default false, set to true to cause the Appender not block the application and just drop the messages -->
</appender>
<springProfile name="dev">
<root level="INFO">
<appender-ref ref="ASYNC_CONSOLE" />
<appender-ref ref="ASYNC_FILE"/>
</root>
<root level="ERROR">
<appender-ref ref="ASYNC_CONSOLE" />
<appender-ref ref="ASYNC_FILE"/>
</root>
<logger name="com.example" level="TRACE" additivity="false">
<appender-ref ref="ASYNC_CONSOLE" />
<appender-ref ref="ASYNC_FILE"/>
</logger>
</springProfile>
<springProfile name="prod">
<root level="INFO">
<appender-ref ref="ASYNC_CONSOLE" />
<appender-ref ref="ASYNC_FILE"/>
</root>
<root level="ERROR">
<appender-ref ref="ASYNC_CONSOLE" />
<appender-ref ref="ASYNC_FILE"/>
</root>
<logger name="com.example" level="TRACE" additivity="false">
<appender-ref ref="ASYNC_CONSOLE" />
<appender-ref ref="ASYNC_FILE"/>
</logger>
</springProfile>

Spring boot application, integration of log4j, no file is created whenusing rolling file appender

In my spring boot application I wanna add logging, for that I tried to use log4j2
This my log4j2.xml file:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
<Properties>
<Property name="LOG_PATTERN">
%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${hostName} --- [%15.15t] %-40.40c{1.} : %m%n%ex
</Property>
</Properties>
<Appenders>
<Console name="ConsoleAppender" target="SYSTEM_OUT"
follow="true">
<PatternLayout pattern="${LOG_PATTERN}" />
</Console>
<!-- Rolling File Appender -->
<RollingFile name="FileAppender"
fileName="logs/log4j2-demo.log"
filePattern="logs/log4j2-demo-%d{yyyy-MM-dd}-%i.log">
<PatternLayout>
<Pattern>${LOG_PATTERN}</Pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="10MB" />
</Policies>
<DefaultRolloverStrategy max="10" />
</RollingFile>
</Appenders>
<Loggers>
<Logger name="tn.manual.controller" level="debug"
additivity="false">
<AppenderRef ref="ConsoleAppender" />
<AppenderRef ref="FileAppender"/>
</Logger>
<Root level="info">
<AppenderRef ref="ConsoleAppender" />
<AppenderRef ref="FileAppender"/>
</Root>
</Loggers>
In the console, I can see the log messages.
But NO file is created, the logs folder should I create it before?
Really, I'm disturbed, I should finish this task today.
I need your help please
you can use like this:
<?xml version="1.0" encoding="UTF-8"?>
<!-- This the default configuration path of logback if you want to modify
the location please provide its entry in application.properties file as value
of logging.config key -->
<configuration scan="false">
<property name="logPattern"
value="%-4relative [%thread] %-5level %logger{35} - %msg%n" />
<property name="logEncoding" value="UTF-8" />
<property name="logDirectory" value="logs" />
<property name="file_base_name" value="Your service name" />
<property name="archive" value="archive" />
<timestamp key="current_date" datePattern="yyyy-MM-dd" />
<!-- Shut down hook registered to close logging factory Elegantly . -->
<shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook" />
<appender name="fileAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logDirectory}/${file_base_name}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logDirectory}/${archive}/${file_base_name}_%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>30MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<charset>${logEncoding}</charset>
<pattern>${logPattern}</pattern>
</encoder>
</appender>
<appender name="ANALYTICS-FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logDirectory}/${file_base_name}_error</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logDirectory}/${archive}/${file_base_name}_error_%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>30MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<charset>${logEncoding}</charset>
<pattern>${logPattern}</pattern>
</encoder>
</appender>
<!--<logger name="analytics" level="INFO" additivity="false">-->
<!--<appender-ref ref="ANALYTICS-FILE"/>-->
<!--</logger>-->
<!-- <appender name="ASYNC500" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="fileAppender"/> <queueSize>5000</queueSize> <discardingThreshold>0</discardingThreshold>
<appender-ref ref="FILE" /> </appender> -->
<!-- Only use this appender when you are developing your application but
during production it is advisable to disable logging to console to reduce
latency in logging as it costs more I/O time. -->
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{dd-MM-yyyy HH:mm:ss.SSS} %highlight(%-5level)
%logger{36}.%M - %msg%n</pattern>
</encoder>
</appender>
<!-- Configuration for loggers ,Loggers who do not have logging level defined
will inherit levels from root
-->
<root level="error">
<appender-ref ref="ANALYTICS-FILE"/>
</root>
<root level="info" additivity="false">
<appender-ref ref="ANALYTICS-FILE"/>
</root>
<!-- -->
<root level="WARN" additivity="false">
<appender-ref ref="fileAppender" />
<appender-ref ref="stdout" />
</root>
<logger name="Your package name" level="DEBUG" additivity="false">
<appender-ref ref="fileAppender"/>
<appender-ref ref="stdout" />
</logger>
<logger name="org.springframework.web" level="WARN" additivity="false">
<appender-ref ref="fileAppender"/>
<appender-ref ref="stdout" />
</logger>
<logger name="org.apache.commons.beanutils.converters" level="WARN" additivity="false">
<appender-ref ref="fileAppender"/>
<appender-ref ref="stdout" />
</logger>
</configuration>
I hope this will help. If it will help, you can accept it as your accepted answer.
Thanks,

Resources