log4j2 代码PatternLayout
时间: 2024-05-08 12:21:45 浏览: 15
log4j2的PatternLayout是一种用于将日志消息格式化为字符串的方式。它允许你在日志输出中使用占位符,以便在运行时将动态值替换为日志消息中的特定部分。以下是一个示例PatternLayout的代码:
```java
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configurator;
import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory;
import org.apache.logging.log4j.core.layout.PatternLayout;
public class Example {
private static final Logger logger = LogManager.getLogger(Example.class);
public static void main(String[] args) {
// Configure Log4j2 programmatically
LoggerContext context = Configurator.initialize(
ConfigurationBuilderFactory.newConfigurationBuilder()
.build());
// Create a PatternLayout with a custom format string
PatternLayout layout = PatternLayout.newBuilder()
.withPattern("[%d{ISO8601}] [%t] [%p] [%c] %m%n")
.build();
// Add the PatternLayout to the root logger
Configurator.getRootLogger().addAppender(
context.getConfiguration()
.getAppender("CONSOLE")
.newBuilder()
.setLayout(layout)
.build());
// Log a message with dynamic values
String name = "Alice";
int age = 30;
logger.info("Hello, {}, you are {} years old.", name, age);
}
}
```
在上面的代码中,我们使用PatternLayout来定义一个自定义的日志消息格式。在这个例子中,我们使用了以下占位符:
- `%d{ISO8601}`:输出日志事件的时间戳,使用ISO8601格式。
- `%t`:输出执行线程的名称。
- `%p`:输出日志事件的级别。
- `%c`:输出记录器的名称。
- `%m`:输出日志消息本身。
- `%n`:输出一个平台相关的行结束符。
我们还使用了`%{}`语法来指定ISO8601格式。最后,我们将PatternLayout添加到根记录器的控制台appender中,并使用记录器打印一条带有动态值的日志消息。