我正在使用Spring-Boot1.2.2版本构建一个web应用程序。
我想根据属性“spring.profiles.active”的值配置日志输出。
该属性在application.yml中定义,锁定配置在logback.xml中描述。
但是我发现logback.xml是在application.yml之前计算的。
如何在logback.xml之前启动一个读取application.yml的SpringApplication?
这是我的application.java。
/**
* Application.java --
*/
package my.project;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).run(args);
}
}
当我将logback.xml编写成像这样的糟糕格式时,
<?xml version="1.0" encoding="UTF-8"?>
aaa
Spring-boot报告一个错误,该错误显示在SpringApplicationBuilder的构造函数中读取了logback.xml。
ERROR in ch.qos.logback.core.joran.event.SaxEventRecorder@449b193b - XML_PARSING - Parsing fatal error on line 2 and column 1 org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 1;
[snip]
at at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
at at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:132)
at at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:275)
at at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:160)
at at org.springframework.boot.builder.SpringApplicationBuilder.createSpringApplication(SpringApplicationBuilder.java:96)
at at org.springframework.boot.builder.SpringApplicationBuilder.<init>(SpringApplicationBuilder.java:84)
at at my.project.Application.main(Application.java:13)
[snip]
另一方面,当我通过添加制表符将application.yml设置为某种不正确的格式时,Spring-boot会报告一个错误,显示它是在“run”方法中读取的。
Caused by: while scanning for the next token
found character '\t(TAB)' that cannot start any token. (Do not use \t(TAB) for indentation)
in 'reader', line 1, column 1:
[snip]
at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEvent(ConfigFileApplicationListener.java:126)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:151)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:128)
at org.springframework.boot.context.event.EventPublishingRunListener.publishEvent(EventPublishingRunListener.java:100)
at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:59)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:285)
at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:139)
at my.project.Application.main(Application.java:13)
如何在logback.xml之前启动SpringApplication读取application.yml
你不能。
很早就读取了日志配置,以便在初始化过程的其余部分可以进行日志记录。然后是第二阶段,根据application.yml
中的某些配置重新配置日志。
日志框架不理解application.yml
或Spring的环境,因此某些属性被复制到系统属性之上,然后您可以在日志配置中引用这些属性。这些属性是logging.file
和logging.path
,它们分别复制到logging_file
和logging_path
。有关更多信息,请参阅Spring Boot文档。
还有一个开放的问题是允许在application.yml
中执行更多的日志配置。
null 其中%classpath%是一个环境变量,它具有日志所需的.jar文件的路径,如: logback-access-1.1.2.jar logback-classic-1.1.2.jar logback-core-1.1.2.jar SLF4J-API-1.7.6.jar 这是我的logback.xml文件 \logback>java-cp.;%classpath%-dlogback.co
和以下依赖项: 现在伐木对我来说很好。但现在我正在尝试将文件移到war文件之外,这样就不必更改war文件来更改日志级别。我试图将文件移动到。我找不到指定文件路径的方法,该路径将是${catalina.base}/conf/logback.xml。我发现了一些类似的问题,但我可以找到一个可以使用的解决方案:使用application.properties和logback Externalizatio
我有一个Java maven项目,需要使用logback作为日志记录框架。我已经将logback.xml配置文件放在src/main/conf文件夹中。但是,由于src/main/conf不在类路径中,它似乎没有被拾取。在构建项目时,我将该文件夹的所有内容复制到target/root/conf,并希望将该目录作为类路径的一部分。谁能让我知道我该怎么强迫?
我有一个SBT/Scala项目,该项目包含其依赖项“ch.qos.logback”%“logback-classic”%“1.0.13”,并包含一个logback.xml文件,其内容如下: 当我运行该程序时,得到的输出如下: ... 我启用了logback配置调试,这样您就可以看到logback声称将该类的loglevel设置为ERROR。但仍然记录了这些消息。
问题内容: 我有一个使用Logback的Spring Boot控制台应用程序。所有属性(针对应用程序和Logback)都被外部化为类路径中的标准application.properties文件。在应用程序本身中可以很好地拾取这些属性,但在logback.xml文件中不会拾取这些属性。在Spring Boot启动之前,似乎好像处理了logback.xml,因此未处理EL占位符。 以FileNameP
我有一个使用Logback的Spring Boot控制台应用程序。所有属性(应用程序和日志)都外部化到类路径中的标准application.properties文件中。这些属性在应用程序本身中可以很好地提取,但在logback.xml文件中不能提取。看起来好像是在Spring Boot启动之前处理了logback.xml,因此没有处理EL占位符。 使用FileNamePattern作为示例,在ap