Jef*_*ass 52 java log4j log4j2
$ java -Dlog4j.configuration=file:///path/to/your/log4j2.xml -jar /path/to/your/jar_file.jar
Run Code Online (Sandbox Code Playgroud)
写到控制台,你得到
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
Run Code Online (Sandbox Code Playgroud)
但是,它看起来像配置文件已找到并且无法解析:
log4j:WARN Continuable parsing error 2 and column 31
log4j:WARN Document root element "Configuration", must match DOCTYPE root "null".
log4j:WARN Continuable parsing error 2 and column 31
log4j:WARN Document is invalid: no grammar found.
log4j:ERROR DOM element is - not a <log4j:configuration> element.
log4j:WARN No appenders could be found for logger (kafka.utils.VerifiableProperties).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Run Code Online (Sandbox Code Playgroud)
Jef*_*ass 60
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
Run Code Online (Sandbox Code Playgroud)
使用log4j的版本2又名"log4j2"
-Dlog4j.configuration=
Run Code Online (Sandbox Code Playgroud)
应该读
-Dlog4j.configurationFile=
Run Code Online (Sandbox Code Playgroud)
log4j:WARN ....
Run Code Online (Sandbox Code Playgroud)
在你的项目中,不包括log4j-1.2 jar,而是包含log4j-1.2-api-2.1.jar.我不确定如何排除log4j 1.2.我知道我的项目的依赖性要求它.所以,通过一些阅读,我排除了一堆东西.
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.10</artifactId>
<version>0.8.2.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我不确定哪种排除做了伎俩.另外,我包含了对1.2 api的依赖,它连接到2.x.
<!--
http://logging.apache.org/log4j/2.0/manual/migration.html
http://logging.apache.org/log4j/2.0/maven-artifacts.html
Log4j 1.x API Bridge
If existing components use Log4j 1.x and you want to have this logging
routed to Log4j 2, then remove any log4j 1.x dependencies and add the
following.
-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
现在,仅进入控制台的1.2日志实际上流向我们的2.x appender.
Con*_*son 12
如果您在类路径中没有log4j-1.2.jar的财富,Renko 在他的评论中指出,您将只看到消息没有找到log4j2配置文件.
如果配置文件中存在错误,则会出现此问题,因为在启动时您不会被告知问题所在.
例如,如果你有一个log4j2.yaml文件,log4j2无法处理,例如,你没有为你的项目配置YAML解析器,或者你的配置完全不正确.您将看到没有找到log4j2配置文件的消息,没有进一步的信息.即使您有一个有效的log4j2.xml文件也是如此,因为log4j2只会尝试处理它找到的第一个配置文件.
我发现调试问题的最佳方法是根据上面提到的命令行参数显式声明您希望使用的配置文件.
-Dlog4j.configurationFile=
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助您确定问题是否实际上是由您的类加载器未找到log4j2配置文件或配置中的其他内容引起的.
更新
您还可以使用以下属性更改状态记录器的默认级别以获取更多信息:
-Dorg.apache.logging.log4j.simplelog.StatusLogger.level=<level>
Run Code Online (Sandbox Code Playgroud)
我已经处理了一段时间了。我已经按照本文中所述更改了所有内容,甚至认为发生了错误。在这种情况下,请确保在更改.xml或.properties文件中的设置时清理项目。在日食环境中。选择项目->清洁
我在java maven项目中使用配置单元jdbc,并且存在相同的问题。
我的方法是在src / main / java / resources下添加一个log4j2.xml文件
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyClassName {
private static final Logger LOG = LoggerFactory.getLogger(MyClassName.class);
}
Run Code Online (Sandbox Code Playgroud)
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="<your_package_name>.<your_class_name>" level="debug">
<AppenderRef ref="Console"/>
</Logger>
<Root level="WARN">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)
我检查以验证日志记录的内容,
mvn dependency:tree | grep log ## ./gradlew dependencies | grep log
[INFO] +- com.prayagupd:log-service:jar:1.0:compile
[INFO] +- org.apache.logging.log4j:log4j-api:jar:2.6.2:compile
[INFO] +- org.apache.logging.log4j:log4j-core:jar:2.6.2:compile
[INFO] | \- commons-logging:commons-logging:jar:1.1.1:compile
Run Code Online (Sandbox Code Playgroud)
val logConfig: PropertiesConfiguration = new PropertiesConfiguration("application.properties")
System.setProperty("log4j.configurationFile", logConfig.getString("log4j.config.file"))
println("log4j.configurationFile :: " + System.getProperty("log4j.configurationFile"))
Run Code Online (Sandbox Code Playgroud)
或者
Configurator.initialize(null, logConfig.getString("log4j.config.file"));
Run Code Online (Sandbox Code Playgroud)
另外,如果进行自动检测,请确保文件名是 log4j2.* 而不是 log4j.*
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
如果找不到 json 解析器,这可能会引发异常
[Fatal Error] log4j2.json:1:1: Content is not allowed in prolog.
Run Code Online (Sandbox Code Playgroud)
小智 5
我遇到了同样的问题,但是在网上阅读有关此问题的信息后,我注意到我的项目中没有log4j2.xml,因此我将相关代码复制到了记事本中,并将记事本文件还原为xml,并添加到了我的项目中。文件夹资源。这个对我有用。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="DEBUG">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
186600 次 |
最近记录: |