当前位置: 首页 > news >正文

运行时添加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

  • customconfig.html#AddingToCurrent

  • how-to-configure-log4j-2-x-purely-programmatically

相关文章:

  • win产品密钥大搜集
  • PowerShell查询AD域内长期没有登录的计算机对象
  • 取distinct数据同时还取其他字段
  • RHCS+Conga+GFS+cLVM共享存储的高可用性web集群
  • 【20160924】GOCVHelper综述
  • Maven 自定义 archetype
  • 谈谈一些有趣的CSS题目(六)-- 全兼容的多列均匀布局问题
  • 7.12 Java-based container configuration (基于java的容器配置)
  • 从根开始的DNS服务器架构,让整个互联网掌控于你的手中
  • 设计模式(五)简单工厂模式+工厂方法模式
  • CentOS 6.5升级Python和安装IPython(亲测可用)
  • Python 学习笔记 - 面向对象(封装,继承和多态)
  • 那些年我们一起追逐过的安全工具
  • 舞伴问题
  • Linux之查看文件大小和数目
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • Apache的80端口被占用以及访问时报错403
  • docker-consul
  • Git 使用集
  • HTML5新特性总结
  • Java到底能干嘛?
  • MySQL用户中的%到底包不包括localhost?
  • ng6--错误信息小结(持续更新)
  • Theano - 导数
  • vue脚手架vue-cli
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 聊聊redis的数据结构的应用
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 以太坊客户端Geth命令参数详解
  • 用jquery写贪吃蛇
  • ​Spring Boot 分片上传文件
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • #微信小程序:微信小程序常见的配置传旨
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (过滤器)Filter和(监听器)listener
  • (学习日记)2024.01.09
  • (转)h264中avc和flv数据的解析
  • (转)jdk与jre的区别
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET 命令行参数包含应用程序路径吗?
  • .NET 中创建支持集合初始化器的类型
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .net解析传过来的xml_DOM4J解析XML文件
  • .net中生成excel后调整宽度
  • ;号自动换行
  • @Query中countQuery的介绍
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • @Transaction注解失效的几种场景(附有示例代码)