Log4j2中${sys:logger.out.type}的含义是什么?
关于Log4j2中${sys:logger.out.type}的解析
你的猜测方向是对的,下面给你更精准的拆解:
- ${sys:logger.out.type}的本质:
sys:前缀确实代表读取JVM系统属性,而logger.out.type是你们团队自定义的系统属性名,它的值就是配置文件里Appender的name属性值(比如stdout或FILE)。 - 核心作用:动态切换日志输出目标:
你的配置里定义了两个Appender:name="stdout"的控制台输出、name="FILE"的滚动文件输出。启动应用时,通过JVM参数指定-Dlogger.out.type=stdout,所有Logger就会把日志输出到控制台;如果指定-Dlogger.out.type=FILE,日志就会输出到滚动文件中。 - 命名逻辑:这不是Log4j2的内置属性,是你们团队自定义的命名,换成
log.target这类其他名字也完全可行,只要启动参数和配置文件里的占位符对应上就行。 - 验证方法:去查项目的启动配置(比如IDE启动参数、部署脚本、Dockerfile等),里面肯定能找到
-Dlogger.out.type=xxx的配置,直接就能看到它实际指向哪个Appender。
内容的提问来源于stack exchange,提问作者waffledood
相关产品推荐
相关产品推荐

