运行时添加log4j2的appender
实例
比如在root logger下新增一个自己的appender ref
public static void load(String appId,String serverAddress,int port){
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final org.apache.logging.log4j.core.config.Configuration config = ctx.getConfiguration();
PatternLayout layout= PatternLayout.createLayout("%d{yyyy-MM-dd HH:mm:ss} [%t] (%F:%L) - %m%n", null, config,null, Charset.forName("UTF-8"),true,false,null,null);
Appender appender= MyLog4j2Appender.createAppender("MyLog4j2Appender",layout, null, null);
appender.start();
config.addAppender(appender);
config.getLoggerConfig("ROOT").addAppender(appender, Level.ERROR,null);
ctx.updateLoggers(config);
}
其实对应的xml配置就是
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<Console name="Console" target="SYSTEM_OUT" ignoreExceptions="false">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] (%F:%L) - %m%n" />
</Console>
<MyLog4j2Appender name="MyLog4j2Appender" >
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] (%F:%L) - %m%n" />
</MyLog4j2Appender>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Console" />
<AppenderRef ref="MyLog4j2Appender" level="error" />
</Root>
</Loggers>
</Configuration>
docs
code-craft
spring boot , docker and so on 欢迎关注微信公众号: geek_luandun
推荐阅读
Java20的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...
codecraft阅读 568
日志-log4j2基于AsyncAppender的异步日志打印
在日志-log4j2日志框架源码学习一文中,对Log4j2的整体结构和同步打印流程进行了一个初步学习,本篇文章将对Log4j2异步打印流程进行学习。在同步日志打印中,应用业务逻辑与日志打印在一个线程中,应用后续业务逻...
半夏之沫阅读 1k
日志-log4j2日志框架源码学习
前言Log4j2诞生于2012年,是Apache推出用于对标Logback的日志框架,本篇文章将对Log4j2的源码进行学习。Log4j2版本:2.17.1正文一. Logger获取通常,使用Slf4j的LoggerFactory获取Log4j2的Logger的代码如下所示。...
半夏之沫赞 1阅读 644
日志-Log4j,Logback,Log4j2和Slf4j日志框架的结构原理
前言本篇文章记录对Log4j,Logback,Log4j2和Slf4j日志框架的结构原理的学习。正文一. 整体结构如果单独使用Log4j,Logback,Log4j2日志框架来进行日志打印,那么使用方式可以如下所示。Log4j {代码...} 单独使用...
半夏之沫赞 1阅读 508
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。