Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【Bug】表达式值为 null 时,日志内容显示表达式,期望显示实际值 #144

Open
HasonHuang opened this issue Sep 11, 2023 · 4 comments

Comments

@HasonHuang
Copy link

HasonHuang commented Sep 11, 2023

问题描述

使用 SpEL 从返回值中取出业务 ID(自增 ID)回填 bizNo,在方法抛出异常时,(没有返回值)表达式求值为 null,最终日志内容 bizNo 会显示表达式原文:{{#_ret?.data?.id}}

@LogRecord(type = "example", bizNo = "{{#_ret?.data?.id}}", success = "成功")
public Resp<Dto> doSomething() {
    ...
}

// 省略 getter, setter
class Resp<T> {
    private T data;
}

// 省略 getter, setter
class Dto {
    private Long id;
}

期望结果

返回表达式求值结果 "" (空字符串)

实际结果

表达式原文:{{#_ret?.data?.id}}

版本

  • 3.0.6

可能的原因

diffLogFlag 默认值是 true!diffLog),程序返回 expressionTemplate 变量而不是求值结果。
截屏2023-09-11 22 56 07

配置 mzt.log.record.diffLog = true 可以返回求值结果(而不是表达式),但是会影响记录日志的功能。

额外的疑问

  1. 什么情况会出现文档说的这种情况?

当mzt.log.record.diffLog=false时,且文案中包含#,对象比对后未发生改变,会跳过日志

@HasonHuang HasonHuang changed the title 【Bug】表达式值为 null 时,日志内容无法显示空字符 【Bug】表达式值为 null 时,日志内容显示表达式,期望显示实际值 Sep 12, 2023
@zoooooway
Copy link

zoooooway commented Jan 18, 2024

我也遇到这个问题, 不知道你解决没有. 我并不想改动源码, 所以我只能改表达式来绕过这个diffLog判断, 比如 {{#_ret?.data?.id}} 改成 {{#_ret?.data?.id?:'-'}}, 只要保证返回的不是空就能绕过这个 diffLog, 希望能帮到有同样问题的人.

@HasonHuang
Copy link
Author

我也遇到这个问题, 不知道你解决没有. 我并不想改动源码, 所以我只能改表达式来绕过这个diffLog判断, 比如 {{#_ret?.data?.id}} 改成 {{#_ret?.data?.id?:'-'}}, 只要保证返回的不是空就能绕过这个 diffLog, 希望能帮到有同样问题的人.

没有解决。时间久远了,我有点记不清问题原因。

谢谢你的方案,下次我试试。

@zyd100
Copy link

zyd100 commented Jun 21, 2024

你好,我也遇到这种情况,不过我是在{_DIFF{#obj}}时遇到的,因为diff函数返回了空字符串,然后就直接记录了{_DIFF{#obj}}

@mouzt
Copy link
Owner

mouzt commented Jun 22, 2024

mzt.log.record.diffLog=false 代表如果diff结果为空,那么不会记录日志,issue 153 如果NEP 通过上述 Spel 三目表达式解决吧

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants