无法配置 log4j2 以在 VS Code 上登录 Maven 项目
Unable to configure log4j2 for logging in Maven project on VS Code
我在 pom.xml 中添加了依赖项:log4j-api (2.17.0) 和 log4j-core (2.17.0)。
Java Windows 10 上的版本是“17.0.1” 2021-10-19 LTS
我已经把文件 log4j2.yml 放在了 src/main/resources 文件夹中。但似乎从未读取过该文件。我能够登录到控制台,但它没有根据我在日志文件中配置的内容进行格式化。同样,我无法登录到文件,因为从未读取过配置文件。
我在 VS Code 上使用 Maven。应用程序本身相当简单:
package com.example;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
/**
* Hello world!
*
*/
public class App
{
private static final Logger logger = LogManager.getLogger(App.class);
public static void main( String[] args )
{
logger.error("Hello Logger!");
System.out.println( "Hello World!" );
}
}
实际执行结果如下:
C:\Users\userme\Documents\workspace\java-sample> c: && cd c:\Users\userme\Documents\workspace\java-sample && cmd /C ""C:\Program Files\Java\jdk-17.0.1\bin\java.exe" -XX:+ShowCodeDetailsInExceptionMessages @C:\Users\USERME\AppData\Local\Temp\cp_a2ngr445g97bq5yjwdq9bbcx.argfile com.example.App "
23:13:36.471 [main] ERROR com.example.App - Hello Logger!
Hello World!
YAML 文件:
Configuration:
name: Default
Properties:
Property:
name: log-path
value: "logs"
Appenders:
Console:
name: Console_Appender
target: SYSTEM_OUT
PatternLayout:
pattern: "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"
File:
name: File_Appender
fileName: ${log-path}/logfile.log
PatternLayout:
pattern: "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"
Loggers:
Root:
level: debug
AppenderRef:
- ref: Console_Appender
Logger:
- name: com.example.App
level: debug
AppenderRef:
- ref: File_Appender
level: debug
“小品英雄”再次来袭! :-)
来自 log4j2 Configuration reference:
Additional runtime dependencies are required for using YAML configuration files.
这些是(截至今天):
<jackson.version>2.14</jackson.version> <!-- 2021/12/26(, merry x-mas!) -->
<!-- ... -->
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
<scope>runtime</scope> <!-- ! -->
<!-- ... -->
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<!-- As: -->
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<!-- ... -->
我在 pom.xml 中添加了依赖项:log4j-api (2.17.0) 和 log4j-core (2.17.0)。
Java Windows 10 上的版本是“17.0.1” 2021-10-19 LTS
我已经把文件 log4j2.yml 放在了 src/main/resources 文件夹中。但似乎从未读取过该文件。我能够登录到控制台,但它没有根据我在日志文件中配置的内容进行格式化。同样,我无法登录到文件,因为从未读取过配置文件。
我在 VS Code 上使用 Maven。应用程序本身相当简单:
package com.example;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
/**
* Hello world!
*
*/
public class App
{
private static final Logger logger = LogManager.getLogger(App.class);
public static void main( String[] args )
{
logger.error("Hello Logger!");
System.out.println( "Hello World!" );
}
}
实际执行结果如下:
C:\Users\userme\Documents\workspace\java-sample> c: && cd c:\Users\userme\Documents\workspace\java-sample && cmd /C ""C:\Program Files\Java\jdk-17.0.1\bin\java.exe" -XX:+ShowCodeDetailsInExceptionMessages @C:\Users\USERME\AppData\Local\Temp\cp_a2ngr445g97bq5yjwdq9bbcx.argfile com.example.App "
23:13:36.471 [main] ERROR com.example.App - Hello Logger!
Hello World!
YAML 文件:
Configuration:
name: Default
Properties:
Property:
name: log-path
value: "logs"
Appenders:
Console:
name: Console_Appender
target: SYSTEM_OUT
PatternLayout:
pattern: "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"
File:
name: File_Appender
fileName: ${log-path}/logfile.log
PatternLayout:
pattern: "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"
Loggers:
Root:
level: debug
AppenderRef:
- ref: Console_Appender
Logger:
- name: com.example.App
level: debug
AppenderRef:
- ref: File_Appender
level: debug
“小品英雄”再次来袭! :-) 来自 log4j2 Configuration reference:
Additional runtime dependencies are required for using YAML configuration files.
这些是(截至今天):
<jackson.version>2.14</jackson.version> <!-- 2021/12/26(, merry x-mas!) -->
<!-- ... -->
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
<scope>runtime</scope> <!-- ! -->
<!-- ... -->
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<!-- As: -->
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<!-- ... -->