title: How to turn off debug log messages in spring boot
body: <p>I read in spring boot docs (<a href="https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html" rel="noreferrer">https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html</a>)</p>
  <blockquote>
  <p>you can also specify debug=true in your application.properties&quot;</p>
  </blockquote>
  <p>So I guess I can turn off the debug logs by adding debug=false in application.properties. I did it but unfortunately, it didn't work. Then I read in the same doc</p>
  <blockquote>
  <p>The logging system is initialized early in the application lifecycle and as such logging properties will not be found in property files loaded via <code>@PropertySource</code> annotations&quot;</p>
  </blockquote>
  <p>and</p>
  <blockquote>
  <p>&quot;Since logging is initialized before the <code>ApplicationContext</code> is created, it isn’t possible to control logging from <code>@PropertySources</code> in Spring <code>@Configuration</code> files&quot;</p>
  </blockquote>
  <p>and</p>
  <blockquote>
  <p>&quot;When possible we recommend that you use the -spring variants for your logging configuration&quot; so I added a file named <code>log4j-spring.properties</code> in <code>src/main/resources</code>.</p>
  </blockquote>
  <p>In such file, I added <code>debug=false</code> (only this line and nothing else) but I am still seeing all &quot;current date&quot; [main] DEBUG ... messages. So, my question is how can I turn off the debug messages in my Spring Boot Application as I will deploy to the application to production. Is there a recommended way to reach this via maven?</p>
  <p><strong>Added in Feb 12th</strong></p>
  <p>The two main methods:
  1)By using AnnotationConfigApplicationContext:</p>
  <pre><code>public class DemoAppNoBoot {
         public static void main(String[] args) {
                AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(
                             BatchConfiguration.class);
                JobLauncher jobLauncher = (JobLauncher) context.getBean(&quot;jobLauncher&quot;);
                Job job = (Job) context.getBean(&quot;job&quot;);
                 try {
                       JobExecution execution = jobLauncher.run(job, new JobParameters());
                } catch (Exception e) {
                       e.printStackTrace();
                }
         }
  }
  </code></pre>
  <p>Snippet output:</p>
  <pre><code>08:26:18.713 [main] DEBUG o.s.core.env.StandardEnvironment - Adding [systemProperties] PropertySource with lowest search precedence
  08:26:18.744 [main] DEBUG o.s.core.env.StandardEnvironment - Adding [systemEnvironment] PropertySource with lowest search precedence
  08:26:18.744 [main] DEBUG o.s.core.env.StandardEnvironment - Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]
  08:26:18.947 [main] INFO  o.s.c.a.AnnotationConfigApplicationContext - Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@532760d8: startup date [Fri Feb 12 08:26:18 CST 2016]; root of context hierarchy
  08:26:18.947 [main] DEBUG o.s.c.a.AnnotationConfigApplicationContext - Bean factory for org.springframework.context.annotation.AnnotationConfigApplicationContext@532760d8: org.springframework.beans.factory.support.DefaultListableBeanFactory@50b494a6: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.event.internalEventListenerProcessor,org.springframework.context.event.internalEventListenerFactory,batchConfiguration]; root of factory hierarchy
  08:26:18.979 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating shared instance of singleton bean 
  ...
  08:26:32.560 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'lifecycleProcessor'
  08:26:32.560 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'org.springframework.context.annotation.internalScheduledAnnotationProcessor'
  08:26:32.560 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor'
  08:26:32.560 [main] DEBUG o.s.s.a.ScheduledAnnotationBeanPostProcessor - Could not find default TaskScheduler bean
  org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.scheduling.TaskScheduler] is defined     at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:372) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]      at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:332) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
  ...
  08:26:33.529 [pool-1-thread-1] DEBUG o.s.jdbc.core.JdbcTemplate - Executing prepared SQL update
  08:26:33.529 [pool-1-thread-1] DEBUG o.s.jdbc.core.JdbcTemplate - Executing prepared SQL statement [UPDATE BATCH_JOB_EXECUTION set START_TIME = ?, END_TIME = ?,  STATUS = ?, EXIT_CODE = ?, EXIT_MESSAGE = ?, VERSION = ?, CREATE_TIME = ?, LAST_UPDATED = ? where JOB_EXECUTION_ID = ? and VERSION = ?]
  08:26:33.529 [pool-1-thread-1] DEBUG o.s.jdbc.core.JdbcTemplate - SQL update affected 1 rows
  08:26:33.545 [pool-1-thread-1] DEBUG o.s.j.d.DataSourceTransactionManager - Initiating transaction commit
  08:26:33.545 [pool-1-thread-1] DEBUG o.s.j.d.DataSourceTransactionManager - Committing JDBC transaction on Connection [org.hsqldb.jdbc.JDBCConnection@33bbce9c]
  08:26:33.545 [pool-1-thread-1] DEBUG o.s.j.d.DataSourceTransactionManager - Releasing JDBC Connection [org.hsqldb.jdbc.JDBCConnection@33bbce9c] after transaction
  08:26:33.545 [pool-1-thread-1] DEBUG o.s.jdbc.datasource.DataSourceUtils - Returning JDBC Connection to DataSource
  08:26:33.545 [pool-1-thread-1] INFO  o.s.b.c.l.support.SimpleJobLauncher - Job: [SimpleJob: [name=job1]] completed with the following parameters: [{}] and the following status: [COMPLETED]
  </code></pre>
  <ol start="2">
  <li><p>Main method with SpringApplication.run</p>
  <p>@SpringBootApplication
  public class DemoApplication {
  public static void main(String[] args) {
  SpringApplication.run(BatchConfiguration.class, args);
  }
  }</p>
  </li>
  </ol>
  <p>Entire output:</p>
  <pre><code>: Spring Boot ::        (v1.3.1.RELEASE)
  2016-02-12 08:02:36.145  INFO 12172 --- [           main] com.example.DemoApplication              : Starting DemoApplication on GH-VDIKCISV252 with PID 12172 (C:\STS\wsRestTemplate\demo\target\classes started by e049447 in C:\STS\wsRestTemplate\demo)
  2016-02-12 08:02:36.145  INFO 12172 --- [           main] com.example.DemoApplication              : No active profile set, falling back to default profiles: default
  2016-02-12 08:02:36.473  INFO 12172 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@4e4aea35: startup date [Fri Feb 12 08:02:36 CST 2016]; root of context hierarchy
  2016-02-12 08:02:42.176  WARN 12172 --- [           main] o.s.c.a.ConfigurationClassEnhancer       : @Bean method ScopeConfiguration.stepScope is non-static and returns an object assignable to Spring's BeanFactoryPostProcessor interface. This will result in a failure to process annotations such as @Autowired, @Resource and @PostConstruct within the method's declaring @Configuration class. Add the 'static' modifier to this method to avoid these container lifecycle issues; see @Bean javadoc for complete details.
  2016-02-12 08:02:42.349  WARN 12172 --- [           main] o.s.c.a.ConfigurationClassEnhancer       : @Bean method ScopeConfiguration.jobScope is non-static and returns an object assignable to Spring's BeanFactoryPostProcessor interface. This will result in a failure to process annotations such as @Autowired, @Resource and @PostConstruct within the method's declaring @Configuration class. Add the 'static' modifier to this method to avoid these container lifecycle issues; see @Bean javadoc for complete details.
  2016-02-12 08:02:42.724  INFO 12172 --- [           main] o.s.j.d.e.EmbeddedDatabaseFactory        : Starting embedded database: url='jdbc:hsqldb:mem:testdb', username='sa'
  2016-02-12 08:02:43.802  WARN 12172 --- [           main] o.s.b.c.l.AbstractListenerFactoryBean    : org.springframework.batch.item.ItemReader is an interface.  The implementing class will not be queried for annotation based listener configurations.  If using @StepScope on a @Bean method, be sure to return the implementing class so listner annotations can be used.
  2016-02-12 08:02:44.990  INFO 12172 --- [           main] o.s.jdbc.datasource.init.ScriptUtils     : Executing SQL script from class path resource [org/springframework/batch/core/schema-hsqldb.sql]
  2016-02-12 08:02:45.179  INFO 12172 --- [           main] o.s.jdbc.datasource.init.ScriptUtils     : Executed SQL script from class path resource [org/springframework/batch/core/schema-hsqldb.sql] in 189 ms.
  2016-02-12 08:02:46.804  INFO 12172 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
  2016-02-12 08:02:46.868  INFO 12172 --- [           main] o.s.b.a.b.JobLauncherCommandLineRunner   : Running default command line with: []
  2016-02-12 08:02:46.962  INFO 12172 --- [           main] o.s.b.c.r.s.JobRepositoryFactoryBean     : No database type set, using meta data indicating: HSQL
  2016-02-12 08:02:47.040  INFO 12172 --- [pool-2-thread-1] o.s.b.c.r.s.JobRepositoryFactoryBean     : No database type set, using meta data indicating: HSQL
  2016-02-12 08:02:47.243  INFO 12172 --- [           main] o.s.b.c.l.support.SimpleJobLauncher      : No TaskExecutor has been set, defaulting to synchronous executor.
  2016-02-12 08:02:47.259  INFO 12172 --- [pool-2-thread-1] o.s.b.c.l.support.SimpleJobLauncher      : No TaskExecutor has been set, defaulting to synchronous executor.
  2016-02-12 08:02:47.321  INFO 12172 --- [           main] o.s.b.c.l.support.SimpleJobLauncher      : Job: [SimpleJob: [name=job1]] launched with the following parameters: [{run.id=1}]
  2016-02-12 08:02:47.368  INFO 12172 --- [           main] o.s.batch.core.job.SimpleStepHandler     : Executing step: [step1]
  2016-02-12 08:02:47.400  INFO 12172 --- [           main] com.example.CustomItemReader             : read method - collecting the MYAPP2 out file names
  2016-02-12 08:02:47.525  INFO 12172 --- [           main] com.example.CustomItemReader             : read method - no file found
  2016-02-12 08:02:47.556  INFO 12172 --- [           main] o.s.b.c.l.support.SimpleJobLauncher      : Job: [SimpleJob: [name=job1]] completed with the following parameters: [{run.id=1}] and the following status: [COMPLETED]
  2016-02-12 08:02:47.556  INFO 12172 --- [           main] com.example.DemoApplication              : Started DemoApplication in 12.1 seconds (JVM running for 13.405)
  2016-02-12 08:02:47.556  INFO 12172 --- [pool-2-thread-1] o.s.b.c.l.support.SimpleJobLauncher      : Job: [SimpleJob: [name=job1]] launched with the following parameters: [{}]
  2016-02-12 08:02:47.618  INFO 12172 --- [pool-2-thread-1] o.s.batch.core.job.SimpleStepHandler     : Executing step: [step1]
  2016-02-12 08:02:47.634  INFO 12172 --- [pool-2-thread-1] com.example.CustomItemReader             : read method - collecting the MYAPP2 out file names
  2016-02-12 08:02:47.634  INFO 12172 --- [pool-2-thread-1] com.example.CustomItemReader             : read method - no file found
  2016-02-12 08:02:47.650  INFO 12172 --- [pool-2-thread-1] o.s.b.c.l.support.SimpleJobLauncher      : Job: [SimpleJob: [name=job1]] completed with the following parameters: [{}] and the following status: [COMPLETED]
  </code></pre>
  <p>BatchConfiguration class</p>
  <pre><code>@Configuration
  @ComponentScan(&quot;com.example&quot;)
  @EnableBatchProcessing
  @EnableAutoConfiguration
  @EnableScheduling
  @PropertySource(&quot;config.properties&quot;)
  public class BatchConfiguration {
         @Autowired
         private JobBuilderFactory jobBuilderFactory;
         @Autowired
         private StepBuilderFactory stepBuilderFactory;
         @Bean
         public Step step1(ItemReader&lt;String&gt; reader,
                       ItemProcessor&lt;String, String&gt; processor, ItemWriter&lt;String&gt; writer) {
                return stepBuilderFactory.get(&quot;step1&quot;).&lt;String, String&gt; chunk(1)                          .reader(reader).processor(processor).writer(writer)
                             .allowStartIfComplete(true).build();
         }
  //I took out the rest of BatchConfiguration class
  </code></pre>
  <p>Application.properties (only one line)</p>
  <pre><code>logging.level.*=OFF
  </code></pre>
  <p>P.S. I will not show config.properties because it only contains several property names with path settup used in business logic</p>
  <p>pom.xml</p>
  <pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
  &lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
         xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
         &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
         &lt;groupId&gt;com.example&lt;/groupId&gt;
         &lt;artifactId&gt;demo&lt;/artifactId&gt;
         &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
         &lt;packaging&gt;jar&lt;/packaging&gt;
         &lt;name&gt;demo&lt;/name&gt;
         &lt;description&gt;Demo project for Spring Boot&lt;/description&gt;
         &lt;parent&gt;
                &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
                &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;
                &lt;version&gt;1.3.1.RELEASE&lt;/version&gt;
                &lt;relativePath /&gt; &lt;!-- lookup parent from repository --&gt;
         &lt;/parent&gt;
         &lt;properties&gt;
                &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
                &lt;java.version&gt;1.8&lt;/java.version&gt;
                &lt;spring.batch.version&gt;3.0.6.RELEASE&lt;/spring.batch.version&gt;
         &lt;/properties&gt;
         &lt;dependencies&gt;
                &lt;dependency&gt;
                       &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
                       &lt;artifactId&gt;spring-boot-starter-batch&lt;/artifactId&gt;
                &lt;/dependency&gt;
                &lt;dependency&gt;
                       &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
                       &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
                       &lt;scope&gt;test&lt;/scope&gt;
                &lt;/dependency&gt;
         &lt;/dependencies&gt;
         &lt;build&gt;
                &lt;plugins&gt;
                       &lt;plugin&gt;
                             &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
                             &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;
                       &lt;/plugin&gt;
                       &lt;plugin&gt;
                             &lt;artifactId&gt;maven-assembly-plugin&lt;/artifactId&gt;
                             &lt;configuration&gt;
                                    &lt;archive&gt;
                                           &lt;manifest&gt;
                                                  &lt;mainClass&gt;com.example.DemoAppNoBoot&lt;/mainClass&gt;
                                           &lt;/manifest&gt;
                                    &lt;/archive&gt;
                                    &lt;descriptorRefs&gt;
                                           &lt;descriptorRef&gt;jar-with-dependencies&lt;/descriptorRef&gt;
                                    &lt;/descriptorRefs&gt;
                             &lt;/configuration&gt;
                             &lt;executions&gt;
                                    &lt;execution&gt;
                                           &lt;phase&gt;install&lt;/phase&gt;
                                           &lt;goals&gt;
                                                  &lt;goal&gt;single&lt;/goal&gt;
                                           &lt;/goals&gt;
                                    &lt;/execution&gt;
                             &lt;/executions&gt;
                       &lt;/plugin&gt;
                       &lt;plugin&gt;
                             &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
                             &lt;artifactId&gt;maven-release-plugin&lt;/artifactId&gt;
                             &lt;version&gt;2.5.1&lt;/version&gt;
                             &lt;configuration&gt;
                                    &lt;goals&gt;install&lt;/goals&gt;
                                    &lt;preparationGoals&gt;install&lt;/preparationGoals&gt;
                             &lt;/configuration&gt;
                       &lt;/plugin&gt;
                       &lt;plugin&gt;
                             &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
                             &lt;artifactId&gt;maven-jar-plugin&lt;/artifactId&gt;
                             &lt;configuration&gt;
                                    &lt;archive&gt;
                                           &lt;manifest&gt;
                                                  &lt;addClasspath&gt;true&lt;/addClasspath&gt;
                                                  &lt;mainClass&gt;com.example.DemoAppNoBoot&lt;/mainClass&gt;
                                           &lt;/manifest&gt;
                                    &lt;/archive&gt;
                             &lt;/configuration&gt;
                       &lt;/plugin&gt;
                &lt;/plugins&gt;
         &lt;/build&gt;
  &lt;/project&gt;
  </code></pre>
  <p>Maven Dependencies (the relevant ones for my doubt):</p>
  <pre><code>logback-classic-1.1.3.jar
  logback-core-1.1.3.jar
  slf4j-api-1.7.13.jar
  log4j-over-slf4j-1.7.13.jar
  </code></pre>