日志組件Log2Net的介紹和使用(附源碼開源地址)


  Log2Net是一個用於收集日志到數據庫或文件的組件,支持.NET和.NetCore平台。 此組件自動收集系統的運行日志(服務器運行情況、在線人數等)、異常日志。程序員還可以添加自定義日志。 該組件支持.NET平台和.NETCore平台,支持將日志寫入到文本文件、SQL Server、Oracle、MySQL,可以方便地擴展到其他數據庫。

  針對這個組件的數據,相應地有日志查詢網站,它查詢日志數據庫的數據(Log2Net組件存儲的日志數據),顯示各服務器/網站的實時數據圖表顯示,提供操作軌跡數據和監控數據的查詢功能,並對異常情況進行告警。

Log2Net系列目錄

1、日志組件Log2Net的介紹和使用(附源碼開源地址)

2、Log2Net的架構簡介

3、Log2Net組件代碼詳解

4、Log2Net日志查詢網站代碼解析

5、Log2Net的部署和運維

一、為什么要開發這個組件

  也有有園友要問了,現在的日志組件太多了啊,什么log4net,ELK,Kafka,Grafana,Graylog、facebook scribe,apache chukwa,cloudera flume等。都是國際大廠或知名組織的開源組件,你又何必重復造輪子呢?

  確實,這些開源系統不需要代碼開發,且功能強大,支持各種類型(例如文本文本、數據庫、緩存等)的日志的接入,有圖表等多種展現方式,能實現海量數據的快速查詢,能存儲為多種類型(例如文本文本、數據庫、緩存、HDFS等),天生的適合分布式部署。缺點是部署運維較為復雜,需要較多的插件支持(java、nodejs、ErLang等);這些大都采用開源的java、scala等語言開發,優先應用於linux平台,我們不能靈活自由地定制自己的需求,相對我們.net平台來說,資料較少開發難度較大,相對我們的需求來說較為龐大。log4net組件雖然可以靈活地應用到.net系統中,但依然不滿足我們的需求。

  我們有眾多的業務系統,為公司管理、運營、決策等提供詳細詳實可靠的信息支持,但這些系統中有些沒有詳實的日志記錄,有些日志分散在各自的系統中,給運維人員、系統管理人員監控系統運行情況、追溯用戶操作、查詢業務變更等帶來很大的不便,開發/運維人員在系統異常時也不能很好的明白異常的上下文信息,且不能保證開發/運維人員都能方便的登錄生產服務器。

  因此,我們需要一個集中式的日志收集系統,監控用戶的操作情況和服務器運行情況,對日志中的關鍵字進行監控,觸發異常時進行報警,協助開發人員查看相關日志 通過這個日志系統,我們能監控和分析系統的用戶習慣和用戶操作,能保障業務穩定運行,提高系統的健壯性和友好性。
  日志采集分析是由需求驅動,根據某種場景的需要日志采集,采集的日志進行針對性的分析。一般常見的日志分析結果應用場景有:
  a、系統審計:對於應用系統,采集操作日志、業務變更日志,有利於備查及提供相關安全審計功能。
  b、系統分析:分析系統或者平台哪些功能是最受歡迎:什么時候使用最多用戶使用,某個區域、某類用戶使用最多。有利於功能推廣;有利於提升服務器資源從而提高用戶體驗。
  c、自動化運維和故障排查:場景微服務架構的系統或者平台,對運維投入的要求高,自動化部署和運維,可以減少運維的工作量和壓力。系統運行環境日志采集、分析,可實現預警、服務器資源動態調配,有利於快速定位排查故障。
  d、內容推薦:根據用戶平常閱讀內容,采集相關日志,並通過分析后,將用戶感興趣的內容系統自動推薦給用戶,從而提升用戶站粘性。

  在我們的系統中,我們想知道用戶進行了什么操作,想知道網站的運行情況(例如在線人數、異常情況等),想監控服務器的運行情況(如內存情況、磁盤使用情況等),目前沒有一個合適的方案來較好地滿足滿足我們的需求。因此,我們開發了一個日志組件和一個集中式日志查詢系統。這個日志組件可以自動地收集系統的運行情況(如服務器內存、磁盤使用、在線人數、日常日志等),可以記錄用戶操作情況等,可以通過日志查詢界面顯示各網站/服務器的實時數據圖表顯示,提供操作軌跡數據和監控數據的查詢功能等。

二、Log2net組件使用效果展示

  使用Log2net組件后,可以將日志數據以友好的形式展示:顯示各服務器/網站的實時數據圖表顯示,提供操作軌跡數據和監控數據的查詢功能,並對異常情況進行告警。

1 操作日志查詢

  操作日志查詢主要用於按照系統名稱、服務器名稱、時段、日志類型、關鍵詞等條件查詢操作軌跡類數據,主要以列表數據的形式展示日志數據。在列表的左側,可以顯示服務器的概況,如cpu使用率,內存使用率等。在列表的上側,顯示日志的分類匯總情況。如下圖所示:

 

2 系統監控 

  系統監控主要監控各服務器和應用網站的情況,主要以圖形化的方面實時顯示網站/服務器的運行情況。

  (1)、概況實時顯示:顯示服務器在當前時刻的cpu/內存使用率等情況;

  (2)、服務器狀態監控:顯示服務器在某時段內的cpu/內存使用率等情況;

  (3)、系統流量監控:顯示系統在某時段內的在線人數、某頁面的訪問人數等;

  (4)、異常告警:在系統新加入監控或失去監控時音樂告警。

  如下圖所示:

  上圖中,每台服務器顯示一條曲線圖。因為本人測試的服務器只有一台,所以只有一個曲線圖。隨着服務器個數的增加,自動添加曲線圖的個數。

      系統代碼參見 https://github.com/yuchen1030/Log2Net-LgWG.LogQuery 。

三、Log2net組件的使用方法

  看了上面炫酷的效果,是不是有點心動了呢,那么怎么將其應用到自己的網站中呢?別急,跟我一步一步來。

  PS. 本組件支持.NET4.5~.NetCore3.0,應該能滿足絕大多數筒子們的需求了吧。若微軟更新了.NetCore平台,稍后會添加對該平台的支持,盡量做到與.NetCore同步更新。

1 引用組件

  在VS開發工具的nuget中,搜索 Log2Net 組件安裝即可。

  搜索搜索 Log2Net ,log4net出現在第一位,好吧,我承認,名字是參考他們的,也瀏覽了他們的代碼~~

  但是,小主,第二個才是我們要安裝的,不要搞錯了哦~~

      你也可以通過Nuge官網來下載和安裝: https://www.nuget.org/packages/Log2Net/  。但建議使用VS工具的nuget來安裝。

2 組件的注冊

  要使用該組件,需要進行組件的注冊:在應用程序初始化的地方,調用  LogApi.RegisterLogInitMsg(SysCategory sys, object applicationObj = null, UserCfg userConfig = null, Dictionary<SysCategory, string> webAppName = null, bool bWriteStartLog = true, bool bLogMonitor = true);

  各參數解釋如下: 

  SysCategory sys:業務系統的名稱,在SysCategory枚舉中定義好了。

  object Application:程序的Application對象,用於網站在線人數和歷史訪客統計,僅在.net平台中使用。netCore中該參數為null;

  UserCfg userConfig:用戶在代碼中進行的配置;若定義了此參數的值,則可以不使用Log2NetCfg.config配置文件;

  Dictionary<SysCategory, string> webAppName:用戶對網站名稱的個性化定義;

  bool bWriteStartLog:是否寫網站啟動的日志,默認為true;

  bool bLogMonitor:是否寫系統定時監控日志,默認為true。

  一般地,在調用該方法時,只需要設置第一個參數,后面的參數可以不設置。

  在.net平台中,是 Global.asax 中Application_Start()事件中注冊;

  在.netCore平台中,是Startup.cs Configure中appLifetime.ApplicationStarted.Register方法中注冊。

  該方法必須被調用,且必須在應用程序初始化事件中調用,否則調用其他寫日志的方法時會出錯。

      此時,若您運行網站,則可以在網站的 App_Data/Log_Files 文件夾下看到txt格式的運行日志數據。若您需要將日志記錄到數據庫,則需要進行下述的日志配置。

3 日志組件的配置

  本組件默認將日志數據記錄到網站的 App_Data/Log_Files 文件夾下,格式為文本文件。若希望將日志數據記錄到數據庫,則需要進行配置。

        1 基礎配置

 1   <baseCfg>
 2 
 3     <!--日志級別:1、Off;2、Error;3、Warn; 4、Business ;5、DBRec; 6、Info;7、Debug (默認為7)-->
 4     <add key="log2NetLevel" value="7" />
 5 
 6     <!--日志記錄方式:1、寫到文件;2、直接寫到數據庫;3、通過隊列寫到數據庫;4、消息隊列寫到數據庫;默認為1-->
 7     <add key="appenderType" value="2" />
 8 
 9     <!--監控日志每隔多少分鍾記錄一次,若未設置默認為10分鍾,若小於0則不監控-->
10     <add key="logMonitorIntervalMins" value="1"/>
11 
12     <!--是否將info信息(僅供調試,不記錄到日志的信息)記錄到本地Debug文件:0不記錄,1記錄(默認為0)-->
13     <add key="bWriteInfoToDebugFile" value="1"/>
14 
15   </baseCfg>
View Code

  2 文件方式配置

1   <fileCfg>
2     <!--寫文件的路徑(僅在日志記錄方式為1時有效)-->
3     <add key = "logToFilePath" value="App_Data/Log_Files"/>
4 
5   </fileCfg>
View Code

  3 數據庫方式配置

 1   <logDBCfg>
 2     <!-- 訪問數據庫的方式:ADONET = 1,  EF = 2,  NH = 3 。默認為1-->
 3     <add key="DBAccessTypeKey" value="1" />
 4 
 5     <!--trace數據庫的類型:SqlServer = 1,  Oracle = 2, MySql = 3,  Access = 4,   PostgreSQL = 5,  SQLite = 6。默認為1-->
 6     <add key="UserCfg_TraceDBTypeKey" value="1" />
 7     <!--monitor數據庫的類型:SqlServer = 1,  Oracle = 2, MySql = 3,  Access = 4,   PostgreSQL = 5,  SQLite = 6。默認為1-->
 8     <add key="UserCfg_MonitorDBTypeKey" value="1" />
 9 
10     <!--trace數據庫的數據庫連接字符串name值。默認為logTraceSqlStr-->
11     <add key="UserCfg_TraceDBConKey" value="logTraceSqlStr" />
12     <!--monitor數據庫的數據庫連接字符串name值。默認為logMonitorSqlStr-->
13     <add key="UserCfg_MonitorDBConKey" value="logMonitorSqlStr" />
14     
15     <!--是否使用代碼中的數據庫連接字符串-->
16     <add key="ConnectStrIsInCode" value="0" />
17     
18   </logDBCfg>
View Code

  4 oracle數據庫特殊配置

 1   <oracleCfg>
 2     <!--是否使用EF初始化數據庫Trace 表:0不使用,1使用,默認為0-->
 3     <add key = "initTraceDBWhenOracle" value="0"/>
 4 
 5     <!--是否使用EF初始化數據庫 monitor 表:0不使用,1使用,默認為0-->
 6     <add key = "initMonitorDBWhenOracle" value="0"/>
 7 
 8     <!--Oracle數據庫驅動方式:0 oracle驅動, 1 微軟驅動,默認為0-->
 9     <add key = "OracleDriverType" value="0"/>
10   </oracleCfg>
View Code

  5 消息隊列配置

1   <MQCfg>
2     <!--消息隊列服務器(地址、用戶名、密碼)-->
3     <add key="RabbitMQServer_Log" value="localhost:5672;oawxAdmin1;admin123.123"/>
4   </MQCfg>
View Code

  6 InfluxDB數據庫方式配置

1   <InfluxDBCfg>
2 
3     <!--是否需要寫到InfluxDB數據庫(默認為0)-->
4     <add key="bWriteToInfluxDB" value="0"/>
5 
6     <!--Influxfu服務器的地址,用戶名,密碼-->
7     <add key="InfluxDBServer_Log" value="http://127.0.0.1:8086/;logAdmin;sa123.123"/>
8 
9   </InfluxDBCfg>
View Code

  7 緩存配置

 1   <cacheCfg>
 2     <!--緩存策略:0、NET緩存;1、CacheManager中的NET系統緩存;2、Memcached緩存;3、Redis緩存;默認為0-->
 3     <add key = "CacheStrategy" value="0"/>
 4 
 5     <!--Memcache緩存服務器-->
 6     <add key = "MemCacheServer" value="127.0.0.1:11211;127.0.0.2:11211"/>
 7 
 8     <!--Redis緩存服務器-->
 9     <add key = "RedisCacheServer" value="127.0.0.1:6379;127.0.0.2:6379"/>
10   </cacheCfg>
View Code

  8 用戶業務系統名稱定義      

1   <userSystemNames>
2     <add key="SysA_01" value="短信接口網站" />
3     <add key="201" value="公司OA系統" />
4     <add key="901" value="用戶數據網站" />
5   </userSystemNames>
View Code

  9 WebConfig總體配置

 1   <configSections>
 2     <!--Log2Net模塊聲明-->
 3     <section name="log2netCfg" type="Log2Net.Config.Log2NetConfigurationSectionHandler, Log2Net" />
 4   </configSections>
 5 
 6   <log2netCfg configSource="Log2NetCfg.config" />
 7   <appSettings>
 8     <!--你自己代碼中需要的配置-->
 9 
10     <!--Log2Net模塊的section名稱-->
11     <add key="log2netCfgSectionName" value="log2netCfg" />
12     <!--使用哪里的配置:File = 1,使用文件中的配置;Code = 2,使用代碼中的配置;MixF = 3,混合使用,沖突時使用文件中的配置;MixC = 4,混合使用,沖突時使用代碼中的配置-->
13     <add key="ConfigInWhere" value="4" />
14   </appSettings>
View Code

  10 日志數據庫連接字符串配置        

 1   <connectionStrings>
 2     <!--操作軌跡日志的數據庫(Sql Server)-->
 3     <add name="logTraceSqlStr" connectionString="data source=.;initial catalog=LogTraceW;user id=sa;password=sa123.123;multipleactiveresultsets=True;application name=EntityFramework" providerName="System.Data.SqlClient" />
 4     <!--系統監控日志的數據庫(Sql Server)-->
 5     <add name="logMonitorSqlStr" connectionString="data source=.;initial catalog=LogMonitorW;user id=sa;password=sa123.123;MultipleActiveResultSets=True;application name=EntityFramework" providerName="System.Data.SqlClient" />
 6 
 7     <!--操作軌跡日志的數據庫(Oracle)-->
 8     <add name="logTraceSqlStr2" connectionString="User Id=scott;Password=sa123123;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=LogTraceW)))" providerName="Oracle.ManagedDataAccess.Client" />
 9     <!--系統監控日志的數據庫(Oracle)-->
10     <add name="logMonitorSqlStr2" connectionString="User Id=scott;Password=sa123123;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=LogMonitorW)))" providerName="Oracle.ManagedDataAccess.Client" />
11 
12     <!--操作軌跡日志的數據庫(MySql)-->
13     <add name="logTraceSqlStr3" connectionString="Data Source=localhost;port=3306;Initial Catalog=LogTraceW;user id=sa;password=sa123123;" providerName="MySql.Data.MySqlClient" />
14     <!--系統監控日志的數據庫(MySql)-->
15     <add name="logMonitorSqlStr3" connectionString="Data Source=localhost;port=3306;Initial Catalog=LogMonitorW;user id=sa;password=sa123123;" providerName="MySql.Data.MySqlClient" />
16   </connectionStrings>
View Code

  一般地,我們只需要在基礎配置中配置  日志記錄方式 appenderType 的值為 3 (通過隊列寫到數據庫),在數據庫方式中配置訪問數據庫的方式和數據庫類型,最后配置數據庫連接字符串即可。若需要使用消息隊列、緩存、InfluxDB等高級特性時,再進行相應配置即可。

  上述1~8的配置,是在單獨的文件中進行配置的。是在哪個文件中配置的呢?在配置9的log2netCfg configSource配置中指定,默認為Log2NetCfg.config文件。

  在第9項配置中,聲明了Log2Net模塊,定義了配置文件文件名,定義了section name,定義了使用哪里的配置。該配置項中的section name 的值必須跟 Log2NetCfg.config 中的根節點保持一致。本組件中默認section name為 log2netCfg。

  第10項配置是日志數據庫的連接字符串配置,注意其name要跟第3項配置UserCfg_TraceDBConKey、 UserCfg_MonitorDBConKey中指定的名稱一致。

      例如,在web.config文件進行如下配置:

 1  <configSections>
 2  <!--Log2Net模塊聲明-->
 3  <section name="log2netCfg" type="Log2Net.Config.Log2NetConfigurationSectionHandler, Log2Net" />
 4  </configSections>
 5  
 6    <log2netCfg configSource="Log2NetCfg.config" />
 7  
 8   <appSettings>
 9     <add key="UnobtrusiveJavaScriptEnabled" value="true" />
10     <!--Log2Net模塊的section名稱-->
11     <add key="log2netCfgSectionName" value="log2netCfg" />
12     <!--使用哪里的配置:File = 1,使用文件中的配置;Code = 2,使用代碼中的配置;MixF = 3,混合使用,沖突時使用文件中的配置;MixC = 4,混合使用,沖突時使用代碼中的配置-->
13     <add key="ConfigInWhere" value="4" />
14   </appSettings>
15 
16  <connectionStrings>
17  <!--操作軌跡日志的數據庫(Sql Server)-->
18  <add name="logTraceSqlStr" connectionString="data source=.;initial catalog=LogTraceW;user id=sa;password=sa123.123;multipleactiveresultsets=True;application name=EntityFramework" providerName="System.Data.SqlClient" />
19  <!--系統監控日志的數據庫(Sql Server)-->
20  <add name="logMonitorSqlStr" connectionString="data source=.;initial catalog=LogMonitorW;user id=sa;password=sa123.123;MultipleActiveResultSets=True;application name=EntityFramework" providerName="System.Data.SqlClient" />
21  
22  </connectionStrings>
View Code

  並在網站中添加 Log2NetCfg.config 文件,在該文件中添加1~8的配置。

      以上配置項,值為數字,進行了簡單的分組。事實上,您可以在值的位置填寫名稱。例如   <add key="log2NetLevel" value="debug" />。您可以隨意分組,隨意明明分組的名稱。例如將 logDBCfg 分組命名為 log2netDBCfg,將 appenderType加入到該分組中,都是可以的,只要不改變配置項的名稱,配置項名稱不重復即可。

 

  以上配置介紹,都是基於.net平台。那么,在.netCore平台中,又該如何配置呢?配置方法如下:

      新建Log2NetCfg.json文件,內容如下:

 1 {
 2   "ConnectionStrings": {
 3     "logTraceSqlStr": "Data Source =127.0.0.1;Initial Catalog = LogTraceW;uid=sa;pwd=sa123.123;",
 4     "logMonitorSqlStr": "Data Source =127.0.0.1;Initial Catalog = LogMonitorW;uid=sa;pwd=sa123.123;",
 5     "logTraceSqlStr2": "User Id=scott;Password=sa123123;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=LogTraceW)))",
 6     "logMonitorSqlStr2": "User Id=scott;Password=sa123123;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=LogMonitorW)))",
 7     "logTraceSqlStr3": "Data Source=localhost;port=3306;Initial Catalog=LogTraceW;user id=sa;password=sa123123;",
 8     "logMonitorSqlStr3": "Data Source=localhost;port=3306;Initial Catalog=LogMonitorW;user id=sa;password=sa123123;"
 9   },
10 
11   "ConfigInWhere": 3,
12 
13   "userSystemNames": {
14     "SysA_01": "短信接口網站",
15     "201": "公司OA系統",
16     "901": "用戶數據網站",
17     "902": "my web"
18   },
19 
20   "baseCfg": {
21     "log2NetLevel": "Info",
22     "appenderType": "2",
23     "logMonitorIntervalMins": "1",
24     "dncSessionTimeoutMins": "20",
25     "bWriteInfoToDebugFile": "0"
26   },
27 
28   "fileCfg": {
29     "logToFilePath": "App_Data/Log_Files"
30   },
31 
32 
33   "logDBCfg": {
34     "DBAccessTypeKey": "2",
35     "UserCfg_TraceDBTypeKey": "1",
36     "UserCfg_MonitorDBTypeKey": "1",
37     "UserCfg_TraceDBConKey": "logTraceSqlStr",
38     "UserCfg_MonitorDBConKey": "logMonitorSqlStr",
39     "ConnectStrIsInCode": "0"
40   },
41 
42   "oracleCfg": {
43     "initTraceDBWhenOracle": "0",
44     "initMonitorDBWhenOracle": "0",
45     "OracleDriverType": "0"
46   },
47 
48   "MQCfg": {
49     "RabbitMQServer_Log": "localhost:5672;oawxAdmin1;admin123.123"
50   },
51 
52   "InfluxDBCfg": {
53     "bWriteToInfluxDB": "0",
54     "InfluxDBServer_Log": "http://127.0.0.1:8086/;logAdmin;sa123.123"
55   },
56 
57   "cacheCfg": {
58     "CacheStrategy": "0",
59     "MemCacheServer": "127.0.0.1:11211;127.0.0.2:11211",
60     "RedisCacheServer": "127.0.0.1:6379;127.0.0.2:6379"
61   }
62 }
View Code

  然后在啟動代碼中聲明使用該配置文件:ConfigureAppConfiguration((context, config) =>{config.AddJsonFile("Log2NetCfg.json", false, true);})  。

 

  另外,對於系統的名字,系統中默認的名稱為Sys字母_兩位數字(SysA_01 ~ SysZ_99)。您可以通過配置將其映射為您想要的名稱。例如

1   <userSystemNames>
2     <add key="SysA_01" value="短信接口網站" />
3     <add key="201" value="公司OA系統" />
4     <add key="901" value="用戶數據網站" />
5   </userSystemNames>
View Code

      這個配置項在查詢網站中很有用。該配置也是在 Log2NetCfg 文件中配置的。

 

  看了這么多配置,也許你早不耐煩了,我的鍋,但沒辦法,考慮到個性化,確實需要這么多配置。但一般地,我們只需要在基礎配置中配置  日志記錄方式 appenderType 的值為 (例如為3:通過隊列寫到數據庫),在數據庫方式中配置訪問數據庫的方式和數據庫類型,最后配置數據庫連接字符串。其他的配置不予配置。不予配置的值將會采用系統默認配置。LgWG.LogQuery項目中就是這種配置方法。

  若您確實需要進行個性化配置,您也可以采用在代碼中進行配置:方法是在初始化方法LogApi.RegisterLogInitMsg中傳入UserCfg userConfig參數的值,並設置ConfigInWhere的值為2即可。

 

4 .net平台日志記錄方法

   (1) 按照上述方法進行組件的注冊、web.config文件和Log2NetCfg.config文件的配置;

  (2)  網站生命周期事件的日志記錄

日志記錄的說明

使用位置

方法

網站全局錯誤日志

Application_Error事件

HandAndWriteException

網站停止日志

Application_End事件

WriteServerStopLog

在線人數和歷史訪客的增加

Session_Start事件

IncreaseOnlineVisitNum

在線人數的減少

Session_End事件

ReduceOnlineNum

網站啟動后初次訪問

Application_BeginRequest事件

WriteFirstVisitLog

  (3) 在需要進行日志記錄的位置調用 LogApi.WriteLog ( LogLevel logLevel, params LogTraceEdm[] model)  或  LogApi.WriteLog ( LogLevel logLevel, params LogMonitorEdm[] model)  方法進行操作軌跡日志或監控日志的記錄。你也可以將LogTraceEdm中除UserId、UserName之外的參數封裝起來,UserId、UserName從你業務系統的基類中獲取,簡化LogApi.WriteLog的操作。

  具體使用方法可參考 https://github.com/yuchen1030/Log2Net/tree/master/Log2NetWeb_net45 。

5 .netCore平台日志記錄方法

   (1) 按照上述方法進行組件的注冊、Log2NetCfg.json文件的配置和聲明;

  (2) 相關服務配置

      a、在Startup.cs的ConfigureServices方法中,調用LogApi.AddLog2netService(services, Configuration);
      b、在 Startup.cs的Configure中,調用LogApi.AddLog2netConfigure(app, env);

  (3) 在需要進行日志記錄的位置調用 LogApi.WriteLog ( LogLevel logLevel, params LogTraceEdm[] model)  或  LogApi.WriteLog ( LogLevel logLevel, params LogMonitorEdm[] model)  方法進行操作軌跡日志或監控日志的記錄。你也可以將LogTraceEdm中除UserId、UserName之外的參數封裝起來,UserId、UserName從你業務系統的基類中獲取,簡化LogApi.WriteLog的操作。

  具體使用方法可參考 https://github.com/yuchen1030/Log2Net/tree/master/Log2NetWeb_DNC 。

四、項目開源地址

  本組件已開源,項目地址為 https://github.com/yuchen1030/Log2Net 。建議使用的VS工具為VS2017。當然,如果你只是使用該組件,隨便你使用VS2012,VS2013,VS2015等工具。

  查詢網站亦開源,項目地址為 https://github.com/yuchen1030/Log2Net-LgWG.LogQuery 。該項目使用ABP+EF框架開發,建議使用VS工具為VS2017。

    接下來,我會介紹該日志組件的架構和代碼實現,敬請期待~~

      Over,sleep.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM