我有一个spring boot项目,以下是我使用记录器的方式:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
class MyController{
private static final Logger log = LogManager.getLogger(MyController.class);
public void do(){
log.error("test");
}
}
和src/main/resources/log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="-- %msg%n --" />
</Console>
</Appenders>
<Loggers>
<Root level="debug" additivity="false">
<AppenderRef ref="console" />
</Root>
</Loggers>
</Configuration>
这是我在控制台中看到的:
2019-09-10 11:04:08.818错误21680---[nio-8081-exec-2]com.ey.web.MyController: testtestBLI
如何强制log4j2使用xml文件?
分级文件:
// hot deploy config https://stackoverflow.com/a/52070831/982234
plugins {
id 'org.springframework.boot' version '2.1.5.RELEASE'
id 'java'
id 'io.spring.dependency-management' version '1.0.1.RELEASE'
}
apply plugin: 'io.spring.dependency-management'
apply plugin: 'idea'
group = 'com.tt'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
sourceSets.main.java.srcDirs += "${buildDir}/generated"
compileJava {
options.annotationProcessorGeneratedSourcesDirectory = file("${buildDir}/generated")
}
dependencyManagement {
imports {
mavenBom 'org.apache.logging.log4j:log4j-bom:2.12.1'
}
}
configurations.all {
exclude group: 'org.slf4j', module: 'slf4j-log4j12'
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-rest'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
compile group: 'org.springframework.security.oauth', name: 'spring-security-oauth2', version: '2.3.6.RELEASE'
compile 'io.jsonwebtoken:jjwt-api:0.10.5'
runtime 'io.jsonwebtoken:jjwt-impl:0.10.5'
runtime 'io.jsonwebtoken:jjwt-jackson:0.10.5'
compile group: 'com.pipl.api', name: 'piplapis', version: '5.0.11'
compile project('system')
compile 'org.apache.httpcomponents:httpclient:4.5'
compile("org.springframework.boot:spring-boot-devtools")
compile "org.springframework.boot:spring-boot-starter-data-jpa:2.0.5.RELEASE"
compile "mysql:mysql-connector-java:5.1.47"
compile group: 'org.hibernate', name: 'hibernate-core', version: '5.4.4.Final'
annotationProcessor("javax.xml.bind:jaxb-api")
annotationProcessor("org.hibernate:hibernate-jpamodelgen")
compile group: 'org.jboss.logging', name: 'jboss-logging', version: '3.4.1.Final'
compile 'com.google.cloud:google-cloud-storage:1.89.0'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.12.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.12.1'
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.9'
}
您需要在main方法内指定log4j2上下文(我猜在您的情况下,在日志记录之前在do()
内):
LoggerContext context = (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);
File log4configFile = new File(log4j2configFilename);
context.setConfigLocation(log4configFile.toURI());
其中log4j2confiFilename
是设置文件的路径。如果您正确地将该文件夹标记为资源文件夹(默认),它应该只是
String log4j2configFilename = "log4j2.xml";
如果不起作用,请尝试:
String log4j2configFilename = "src/main/resources/log4j2.xml";
编辑:
您没有排除正确的模块。在你的gradle文件中,你必须替换
exclude group: 'org.slf4j', module: 'slf4j-log4j12'
具有
exclude group: 'org.apache.logging.log4j', module: 'log4j-to-slf4j'
可能发生的情况是,该模块仍然处于从属关系中,因为它以前包含过。为了彻底摆脱它,你必须管理图书馆。
关于IntelliJ IDEA:is文件
希望我能帮忙。
我试图在spring boot应用程序中添加log4j2框架,并使用spring AOP将日志记录问题与逻辑业务分离开来。不幸的是,当我尝试记录消息时,log4j2不起作用,它使用spring默认的日志记录。 这是我的LoggingAspect类,我尝试在其中记录消息:LoggingAspect。JAVA 这是我的pom。xml文件: 最后这是我的log4j2。xml文件: 当我尝试使用logge
我想使用新的log4j2-Java日志框架。一切正常,但我从一小时后就尝试加载一个自定义配置文件来配置日志记录(如日志级别)。 这是我的log4j2.xml: 我尝试了以下方法,但没有任何效果: 移动log4j2.xml文件,使其位于默认包中。 将log4j2.xml文件移动到项目中的任意位置 将log4j2.xml文件命名为log4j.xml 在项目中创建一个文件夹,将log4j2.xml文件放
我已经调试了一整天,几乎尝试了互联网上所说的所有方法,但我仍然没有正确理解。 我使用Spring Boot和log4j2进行日志记录,因为我希望将日志写入文件而不是控制台。当我启动Spring Boot时,日志文件被成功创建,但我看不到文件上写着“Hello Philippine”。我希望你们能帮我。 这是我的Spring Boot应用程序: 我的log4j2。xml 我的POM: 我的申请表上没
问题内容: 在Spring 4或Spring Boot中,有没有办法在没有xml的情况下初始化EhCache? 我注意到Spring Boot 1.0.0.RC3没有任何ehcache依赖项,但是Spring 4.0GA发行版中 提到它改进了对EhCache的支持。而且,Spring 3拥有类,但是它不再是依赖项的一部分。 编辑: Spring 4确实具有EhCache支持。您必须添加依赖项: E
在Spring 4或Spring Boot中,有没有一种不用xml初始化EhCache的方法? 我注意到Spring Boot1.0.0.RC3没有任何ehcache依赖项,但是Spring 4.0GA发布帖子提到它改进了对EhCache的支持。此外,Spring 3有类,但这不再是依赖项的一部分。 编辑:Spring 4确实有EhCache支持。您必须添加依赖项: Edit2:我试过以下方法,我
我有一个简单的Spring Boot应用程序(在STS中创建为“starter project”)。我使用log4j2进行日志记录 无论我尝试什么,我都没有在交换中看到任何消息;我只在控制台中看到它们。 我成功地将log4j(1)与旧版本的org.springframework.amqp:spring-rabbit:1.5.6 AmqpAppender(org.springframework.am