inversionhourglass/Rougamo

能否在一个函数体内获取到对应的MethodContext?

Hitokamikon opened this issue · 5 comments

例如搞一个MethodContext的静态方法GetCurrent()之类的

方便问一下你这个使用场景是什么吗,肉夹馍的是期望能够更少的侵入现有代码,直接在函数内操作MethodContext,这种方式侵入性太大,而且MethodContext包含很多切面功能方法,如果在函数内操作,可能导致意料之外的错误

哦哦,是这样,我希望在OnExit的时候把函数体内打的一些log一并输出到文件里进行记录,就想全部记录到MethodContext的Datas下面

方便问一下你这个使用场景是什么吗,肉夹馍的是期望能够更少的侵入现有代码,直接在函数内操作MethodContext,这种方式侵入性太大,而且MethodContext包含很多切面功能方法,如果在函数内操作,可能导致意料之外的错误

我现在的做法是定义了一个ILogger的接口,
然后在OnEnter时扫描方法的参数里是否有ILogger的参数,如果有,则赋值一个MethodLogger(继承ILogger,里面引用MethodContext,MethodLogger里实现的Log方法就把内容加到MethodContext的Datas里面)给这个参数。
函数体里面就用这个ILogger去打印日志,最活在OnExit里把这些打印的日志一并写入文件

这种情况推荐MethodLogger将日志数据保存在自己的对象中,比如使用AsyncLocal来保存,然后MethodLogger同时提供一个类似Flush的方法,最后在OnExit中调用Flush来写入日志。这样职责分离,日志的数据由Logger本身来管理

无回复,关闭issue