使用ActionFilter新增日誌

2022-09-09 17:18:24 字數 2853 閱讀 5476

core webapi:的幾種過濾器:

1.授權過濾器:authorizeattribute.

2.異常過濾器:iexceptionfilter , iasyncexceptionfilter

3.方法過濾器: actionfilterattribute, iactionfilter , iasyncactionfilter.

後邊兩種是相對asp.net framwork來講,asp.net core所特有的

4.資源過濾器:iresourcefilter

5.結果過濾器:resultfilterattribute, iresultfilter, iasyncresultfilter

1.新建乙個custiomactionfilterattribute的類

public

class

custiomactionfilterattribute

:attribute

, iactionfilter//也可以直接繼承actionfilter

public

void

onactionexecuting

(actionexecutingcontext context)

}

2.將此特性新增到要呼叫的action方法上(當然也可放在類上,實現全域性呼叫)

//上邊還有該類的建構函式,為精簡篇幅此處省略

]//以特性的方式標記,只能支援無引數的建構函式:

public

string

getinbyparamter

(int id,

string name)的")

;return $"this is 的"

;}

3.執行呼叫後,觀察控制台結果

由上邊結果可以看出來:actionfilterattribute方法,是先呼叫建構函式,然後再進入類的例項裡面,所以依靠他的這種特性,我們可以實現日誌記錄的功能;

4.在custiomactionfilterattribute類裡面新增與日誌相關的**:

其中context是個功能很強大的函式,注意如何通過他來呼叫執行時的相關資訊。其中context.routedata.values[』『action』』]定位到的是呼叫的api方法

public

class

custiomactionfilterattribute

:actionfilterattribute

public

void

onactionexecuted

(actionexecutedcontext context)

執行後api,"

+ $" 引數是"

;//如何查呼叫的api

logger.

loginformation

(strlog)

; console.

writeline

("this is custiomactionfilterattribute.onactionexecuted");

}public

void

onactionexecuting

(actionexecutingcontext context)

開始呼叫的api,"

+ $" 引數是"

;//如何查呼叫的api

logger.

loginformation

(strlog)

; console.

writeline

("this is custiomactionfilterattribute.onactionexecuting");

}}

5.如何呼叫? 在action方法上新增actionfilter特性

此次呼叫,不再是直接新增 [custiomactionfilter] 而是使用 [typefilter(typeof(custiomactionfilterattribute))] 因為直接新增特性,只能應用於無參函式時;

]// [custiomactionfilter]//以特性的方式標記,只能支援無引數的建構函式:

[typefilter

(typeof

(custiomactionfilterattribute))]

public

string

getinbyparamter

(int id,

string name)的")

;return $"this is 的"

;}可檢視執行後的結果(控制台的輸出)

此時已經實現了actionfilter的基本呼叫,如果要實現更複雜的功能,可以自定義filter;

題外話:如何用swagger完成測試

android LinearLayout新增分隔線

linearlayout支援直接顯示分隔線。設定標籤的 android showdividers屬性可以再linearlayout的相應位置顯示分隔線。如果有多個linearlayout,顯示效果和在 linearlayout之間加分隔線是一樣的。android showdividers屬性可以設定...

ClippingNode的使用之為節點新增動態光效

效果 遊戲中經常會用到這種效果,今天,實現下,方便以後使用。實現方法 1.新增 clippingnode 2.為clippingnode 新增模板 即我們要新增動態光效的模板 3.新增光效到 clippingnode中 4.將clippingnode 新增到節點中 下面,將把這個過程封裝到乙個方法中...

prometheus grafana監控新增新節點

已部署好prometheus grafana,並能正常執行 在client端先部署好已經編寫好的node exporter 編寫指令碼並執行 bin bash wget http ip node.tar.gz 獲取編寫好的node tar zxvf node.tar.gz c usr local 解...