Spring Sleuth中怎么主动添加日志
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章将为大家详细讲解有关Spring Sleuth中怎么主动添加日志,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Spring Sleuth 是通
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
福泉路携程网络技术大楼
西安华为软件开发面试
处理上亿条数据用什么数据库
昆明创新软件开发特价
arcgis表转地理数据库
贵州服务器散热器加工虚拟主机
盐城软件开发查学历吗
怎么才能做好网络安全
我的世界粘液科技服务器怎么进
支信网络技术有限公司
数据库 获取字段中数字
沈阳软件开发王世德
魅族服务器超时
服务器示意图
特斯拉app 服务器维护
网络安全管理义务是什么
商务网络安全存在的问题
河南项目管控软件开发平台
网络安全防护体系设计
国外即时通讯软件开发
文件链接数据库报错
关于网络安全工程师的企业
服务器465端口已经打开
规格 数据库设计
海南数据库安全箱性价比
迷你切换服务器
安卓软件开发工资待遇
计算机网络技术方向偏软件吗
优秀产品设计案例数据库
武汉较好的软件开发公司