【发布时间】:2014-12-23 22:46:31
【问题描述】:
我尝试将Spring 和Maven 添加到我现有的项目之一中,但我发现无论我如何配置,日志记录似乎都超出了我的控制范围。
我尝试将log4j.properties 放在src/main/java 和src/main/resources 中(实际上我不确定该放在哪里)。
但是当我使用Log4j 登录时,日志只显示在控制台中,尽管我将它配置到一个文件中。
我的log4j.properties 是这样的:
log4j.rootLogger=DEBUG, A1
log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.encoding=utf-8
log4j.appender.A1.File=E:\Programminglog\debug.log
log4j.appender.A1.Threshold = DEBUG
log4j.appender.A1.Append=true
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
我不确定我是否遗漏了什么或Spring 覆盖了某些设置,因为我是Maven 和Spring 的新手。
PS:在我在pom.xml 中添加Log4j 的依赖项之前,虽然我使用org.apache.log4j.Logger,但没有编译错误
这就是我的 application.java 的样子:
@Configuration
@EnableAutoConfiguration
@ComponentScan({"hello","wodinow.weixin.jaskey"})
public class Application extends WebMvcConfigurerAdapter {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(Application.class, args);
System.out.println("Let's inspect the beans provided by Spring Boot:");
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
for (String beanName : beanNames) {
System.out.println(beanName);
}
LogUtil.info("Application Boots!");// here this line does not show in the file
}
@Bean
public CommandService commandService(){
return CommandService.getInstance();
}
}
【问题讨论】:
-
你在什么服务器上运行这个?仅供参考,默认情况下,Maven 不会将任何内容从 src/main/java 复制到您的应用程序中。因此你应该在 src/main/resources 中保留 log4j.properties 等
-
我使用 spring embed tomcat,我运行我的 Application.java 作为 java 应用程序来启动我的应用程序。顺便说一句,我也将该属性复制到 webapp/WEB-INF 中,但没有运气:(
-
log4j.properties 必须在类路径上可用。 WEB-INF 目录(通常)不在类路径上。如果您在命令行上使用
-Dlog4j.debug运行您的应用程序,您会发现 log4j 认为正在发生的事情(如果有的话)。 -
@SteveC,请给我完整的命令如何使用 -Dlog4j.debug 运行我的应用程序?顺便说一句,我使用 Spring boot,我不知道它做了什么..
标签: java spring maven log4j spring-boot