是否可以根据我使用的Spring Boot配置文件加载不同的log4j配置。
假设我在application.properties中
log.level=DEBUG
log.path=/opt/tomcat/logs/blabla.log
log.appender=CONSOLE
在application-live.properties中,我为所有3个都有不同的值
log.level=WARN
log.path=/crazy/tomcat/logs/blabla.log
log.appender=FILE
<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="${log.path}" />
<param name="maxFileSize" value="8MB"/>
<param name="maxBackupIndex" value="50"/>
<param name="Append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{MM-dd HH:mm:ss} [${project.artifactId}-${project.version}] %p [SearchID - %X{searchID}] %c{1}.%M(%L) %m%n" />
</layout>
</appender>
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{MM-dd HH:mm:ss} [${project.artifactId}-${project.version}] %p [SearchID - %X{searchID}] %c{1}.%M(%L) %m%n" />
</layout>
</appender>
<logger name="com.mchange" >
<level value="${log.level}" />
<appender-ref ref="${log.appender}" />
</logger>
<logger name="java.sql" >
<level value="${log.level}" />
<appender-ref ref="${log.appender}" />
</logger>
<logger name="org.springframework">
<level value="${log.level}" />
<appender-ref ref="${log.appender}"/>
</logger>
<root>
<level value="${log.level}"/>
<appender-ref ref="${log.appender}"/>
</root>
您可以根据环境对不同的配置使用src/main/environment
中的单独文件夹。
那么如果您像这样使用gradle
build,
./gradlew build -Penv=prod
然后,要捕捉环境,在build.gradle
中添加以下内容,
project.ext {
environment = "dev"
}
loadConfiguration()
def loadConfiguration() {
project.environment = hasProperty('env') ? env : 'dev'
}
然后在生成时使用follows复制配置。(将此移动到一个名为copy.gradle
的单独文件中,并在生成文件的顶部使用apply from:'copy.gradle'
),
task copyConfiguration << {
println "Target environment: $environment"
copy {
from "src/main/environment/$project.environment"
into "src/main/resources"
include "*/"
}
}
对于maven
来说,它似乎比gradle
容易,
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<resources>
<resource>
<directory>src/main/resources/dev</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>prod</id>
<build>
<resources>
<resource>
<directory>src/main/resources/prod</directory>
</resource>
</resources>
</build>
</profile>
</profiles>
和构建类似mvn安装-pdev
,我从这里获取了它,阅读这里获得更多信息。
我正在tomcat(Servlet2.5)中运行一个传统的Spring启动战。虽然CharacterEncodingFilter默认配置为spring boot 1.2.0,但请求没有任何编码集。我可以在自动配置和日志中看到它的配置。这可能不是由SpringBootLegacy(1.0.1)配置的?我将过滤器添加到web。xml和我的请求现在采用utf-8编码。但是,这不适用于请求参数。我认为这是
当我在项目中包括spring boot时,它有其他spring组件的预定义版本。带有spring boot starter web的spring boot 1.3.5自动包含spring mvc 4.2.6。如果我想使用WebMVC4.3中的一些功能,我怎么知道它们是兼容的?是否存在兼容性矩阵?还是我应该把它当作一个单一的版本,永远不改变版本?
我希望Hibernate创建一个基于实体类的模式,然后Flyway填充表。现在Flyway在创建表之前启动v1__init.sql并抛出异常。我该如何改变这个顺序或者我能做什么解决方案? pom.xml:
我试图从我的Spring启动服务向IBMMQ队列发送消息。配置如下: 一个pplication.properties 菜豆 IBM MQ浏览器图片 当我尝试发送消息时,我收到错误: 我错过了什么?我的chammel类型所显示的错误与我的请求不符,但我不知道这意味着什么。 提前谢谢。
当运行undertow和spring-boot1.4时,我得到了NullPointerException。 未激活StartupServletContextListener时可能会发生此错误。它是由UndertowMyFacesSpringBootaUtoConfiguration创建的。Debug表示它已激活: 上面的堆栈跟踪:
我已经调试了一整天,几乎尝试了互联网上所说的所有方法,但我仍然没有正确理解。 我使用Spring Boot和log4j2进行日志记录,因为我希望将日志写入文件而不是控制台。当我启动Spring Boot时,日志文件被成功创建,但我看不到文件上写着“Hello Philippine”。我希望你们能帮我。 这是我的Spring Boot应用程序: 我的log4j2。xml 我的POM: 我的申请表上没