Spring Sleuth中怎么主动添加日志
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关Spring Sleuth中怎么主动添加日志,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Spring Sleuth 是通
千家信息网最后更新 2026年11月03日Spring Sleuth中怎么主动添加日志
这篇文章将为大家详细讲解有关Spring Sleuth中怎么主动添加日志,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
Spring Sleuth 是通过 logging.pattern.level 变量来实现主动日志添加的。
添加 在 TraceEnvironmentPostProcessor 中
@Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { Map map = new HashMap(); // This doesn't work with all logging systems but it's a useful default so you see // traces in logs without having to configure it. // 在这里判断开启 sleuth 则修改 logging.pattern.level 的值 if (Boolean.parseBoolean(environment.getProperty("spring.sleuth.enabled", "true"))) { map.put("logging.pattern.level", "%5p [${spring.zipkin.service.name:${spring.application.name:-}},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}]"); } // TODO: Remove this in 2.0.x. For compatibility we always set to true if (!environment.containsProperty(SPRING_AOP_PROXY_TARGET_CLASS)) { map.put(SPRING_AOP_PROXY_TARGET_CLASS, "true"); } addOrReplace(environment.getPropertySources(), map); } 在 LoggingSystemProperties 将 LOG_LEVEL_PATTERN 的值设置为 logging.pattern.level 的值
public void apply(LogFile logFile) { RelaxedPropertyResolver propertyResolver = RelaxedPropertyResolver .ignoringUnresolvableNestedPlaceholders(this.environment, "logging."); setSystemProperty(propertyResolver, EXCEPTION_CONVERSION_WORD, "exception-conversion-word"); setSystemProperty(PID_KEY, new ApplicationPid().toString()); setSystemProperty(propertyResolver, CONSOLE_LOG_PATTERN, "pattern.console"); setSystemProperty(propertyResolver, FILE_LOG_PATTERN, "pattern.file"); // LOG_LEVEL_PATTERN = "LOG_LEVEL_PATTERN" 设置到环境变量 setSystemProperty(propertyResolver, LOG_LEVEL_PATTERN, "pattern.level"); if (logFile != null) { logFile.applyToSystemProperties(); } }设置
在 PropertyAction#begin 解析配置 在 InterpretationContext 解析当前的字符串
public String subst(String value) { if (value == null) { return null; } return OptionHelper.substVars(value, this, context); } public static String substVars(String input, PropertyContainer pc0, PropertyContainer pc1) { try { return NodeToStringTransformer.substituteVariable(input, pc0, pc1); } catch (ScanException e) { throw new IllegalArgumentException("Failed to parse input [" + input + "]", e); } } public static String substituteVariable(String input, PropertyContainer pc0, PropertyContainer pc1) throws ScanException { Node node = tokenizeAndParseString(input); NodeToStringTransformer nodeToStringTransformer = new NodeToStringTransformer(node, pc0, pc1); return nodeToStringTransformer.transform(); } public String transform() throws ScanException { StringBuilder stringBuilder = new StringBuilder(); compileNode(node, stringBuilder, new Stack()); return stringBuilder.toString(); } private void compileNode(Node inputNode, StringBuilder stringBuilder, Stack cycleCheckStack) throws ScanException { Node n = inputNode; while (n != null) { switch (n.type) { case LITERAL: handleLiteral(n, stringBuilder); break; case VARIABLE: handleVariable(n, stringBuilder, cycleCheckStack); break; } n = n.next; } } private void handleVariable(Node n, StringBuilder stringBuilder, StackcycleCheckStack) throws ScanException { // ... String key = keyBuffer.toString(); String value = lookupKey(key); // ... } private String lookupKey(String key) { String value = propertyContainer0.getProperty(key); if (value != null) return value; if (propertyContainer1 != null) { value = propertyContainer1.getProperty(key); if (value != null) return value; } // 在这里找到值 value = OptionHelper.getSystemProperty(key, null); if (value != null) return value; value = OptionHelper.getEnv(key); if (value != null) { return value; } return null; }
public static String getSystemProperty(String key, String def) { try { return System.getProperty(key, def); } catch (SecurityException e) { return def; } }关于Spring Sleuth中怎么主动添加日志就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
主动
日志
内容
变量
文章
更多
知识
篇文章
不错
字符
字符串
环境
质量
参考
帮助
有关
配置
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技园
互联网科技公司发展
互联网 卓越科技
成都互联网科技公司
互联网科技缩写
互联网科技论坛
深圳艾佳互联网科技
一五八零互联网科技
互联网科技创新企业排名
成都玖崟互联网科技有限公司乐商圈怎么样
互联网金融中的现代科技
用友工业互联网科技发展
互联网时代的科技公司
山东子淼互联网科技有限公司
皮皮虾互联网科技有限公司
四川互联网展示科技馆设计
35岁以上互联网科技行业
互联网科技平台产品运营
广州全民伙伴互联网科技有限公司
小牛互联网科技有限公司地址
中国互联网科技工作委员会毛军
科技股互联网
未来的互联网科技
互联网科技公司做什么
科技大学互联网专业好不好
江阴互联网智能科技产品进口
互联网保险科技创业
长沙茂晟互联网科技有限公司
恒生互联网科技业指数调整周期
米泉互联网科技专业怎么样