Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tomcat8 Springboot未读取application.properties_Java_Spring_Logging_Application.properties - Fatal编程技术网

Java Tomcat8 Springboot未读取application.properties

Java Tomcat8 Springboot未读取application.properties,java,spring,logging,application.properties,Java,Spring,Logging,Application.properties,我第一次在一个个人项目上使用java spring,但似乎无法使application.properties中的任何属性正常工作。我将其简化为这个测试用例,但它似乎什么都没有做: 应用程序属性 logging.level.root=WARN AppInitalizer.java: import javax.servlet.Filter; import org.springframework.boot.autoconfigure.SpringBootApplication; import or

我第一次在一个个人项目上使用java spring,但似乎无法使application.properties中的任何属性正常工作。我将其简化为这个测试用例,但它似乎什么都没有做:

应用程序属性

logging.level.root=WARN
AppInitalizer.java:

import javax.servlet.Filter;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


@SpringBootApplication
@ConfigurationProperties
public class AppInitializer
    extends AbstractAnnotationConfigDispatcherServletInitializer {

    private static final Logger log = LoggerFactory.getLogger(AppInitializer.class);

    @Override
    protected Class<?>[] getRootConfigClasses() {
        log.debug("This is a debug message");
        log.error("This is an error message");
        return new Class[] {};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] {};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

    @Override
    protected Filter[] getServletFilters() {
        return new Filter[] {};
    }
}
这两个文件部署到类路径根目录下的同一目录中

应该只显示第二条日志消息,但我无法处理第一条

相关ivy.xml配置:

<!-- Spring Framework -->
<dependency org="org.springframework"
            name="spring-webmvc" rev="5.0.9.RELEASE"/>
<!-- Logging -->
<dependency org="log4j" name="log4j" rev="1.2.17"/>
似乎没有任何属性源是从类路径加载的,我在类路径中有application.properties

  • Spring还引入了新的@PropertySource注释,作为向环境中添加属性源的方便机制。此注释将与基于Java的配置和@configuration注释一起使用:

    @配置 @PropertySource(“类路径:foo.properties”) 公共类应用初始值设定项{ //... }

  • 注册新属性文件的另一种非常有用的方法是使用占位符,允许您在运行时动态选择正确的文件;例如:

    @PropertySource({ “classpath:persistence-${envTarget:mysql}.properties” })

  • 您可以在XML中使用新的属性文件,Spring可以通过namespace元素访问这些文件:


  • foo.properties文件应放在/src/main/resources下,以便在运行时在类路径上可用。

    请在apache.commons.logging上使用slf4j.Logger

    使用slf4j,而不是
    org.apache.commons.logging.LogFactory

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    private final Logger log = LoggerFactory.getLogger(this.getClass());
    
    或静态记录器:

    private static final Logger log = LoggerFactory.getLogger(AppInitializer.class);
    

    我建议您直接运行
    AppInitializer
    ,而无需创建WAR并部署它。SpringBoot附带集成的Tomcat/Jetty,可以随时使用。这样,你就可以更容易地调试你的问题。你能举个例子说明如何调试吗?我没有使用IDE、maven或gradle。文档说我可以从一个jar运行它,但它没有说jar的布局应该是什么。@user2752635你能像pom那样显示更多相关的日志配置吗?例如,我没有使用maven。我有一个ivy.xml文件,ant用它来下载依赖项。你想看吗?我添加了ivy.xml的引导和日志部分
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    private final Logger log = LoggerFactory.getLogger(this.getClass());
    
    private static final Logger log = LoggerFactory.getLogger(AppInitializer.class);