欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# 使用Serilog日志框架的方法

 更新時間:2023年11月25日 09:24:56   作者:廣闊之海  
Serilog是一款配置方便,使用靈活的日志框架,這篇文章主要介紹了C# 使用Serilog日志框架,需要的朋友可以參考下

Serilog是一款配置方便,使用靈活的日志框架,使用方法如下:
1、日志輸出到控制臺,需要使用Nuget安裝Serilog和Serilog.Sinks.Console兩個包

// 初始化日志的共享實例
            Log.Logger = new LoggerConfiguration()
                .MinimumLevel.Debug()
                .Enrich.FromLogContext()
                .WriteTo.Console()
                .CreateLogger();
            // 寫入日志
            Log.Information("Info");

2、日志輸出到文件,需要安裝Serilog.Sinks.File包

// 初始化日志的共享實例
            Log.Logger = new LoggerConfiguration()
                .MinimumLevel.Debug()
                .Enrich.FromLogContext()
                .WriteTo.File("logs/app.log", 
                    rollingInterval: RollingInterval.Day, // 每天一個日志文件
                    shared: true    // 允許其他進程共享日志文件
                ).CreateLogger();
            // 寫入日志
            Log.Information("Info");

3、可以通過配置,讓不同日志級別輸出到不同的日志文件

// 初始化日志的共享實例
            Log.Logger = new LoggerConfiguration()
                .MinimumLevel.Debug()
                .Enrich.FromLogContext()
                // 調試日志
                .WriteTo.Logger(x => x
                    .Filter.ByIncludingOnly(e => e.Level == Serilog.Events.LogEventLevel.Debug)
                    .WriteTo.File("logs/debug.log", rollingInterval: RollingInterval.Day, shared: true)
                // 錯誤日志
                ).WriteTo.Logger(x => x
                    .Filter.ByIncludingOnly(e => e.Level == Serilog.Events.LogEventLevel.Error)
                    .WriteTo.File("logs/error.log", rollingInterval: RollingInterval.Day, shared: true)
                // 應用日志
                ).WriteTo.Logger(x => x
                    .Filter.ByIncludingOnly(e => e.Level != Serilog.Events.LogEventLevel.Debug &&
                        e.Level != Serilog.Events.LogEventLevel.Error)
                    .WriteTo.File("logs/app.log", rollingInterval: RollingInterval.Day, shared: true)
                ).CreateLogger();
            // 寫入日志到 app.log
            Log.Information("Info");
            // 寫入日志到 debug.log
            Log.Debug("Debug");
            // 寫入日志到 error.log
            Log.Error("Error");

4、寫入日志到SqlServer

// 寫入數(shù)據(jù)庫的配置
            var sinkOpts = new MSSqlServerSinkOptions();
            sinkOpts.TableName = "logs";            // 日志表名
            sinkOpts.AutoCreateSqlTable = true;     // 自動創(chuàng)建表
            // 列配置
            var columnOpts = new ColumnOptions();
            columnOpts.Store.Remove(StandardColumn.Exception);  // 去掉異常列
            columnOpts.Store.Remove(StandardColumn.Properties); // 去掉屬性列
            columnOpts.Exception.DataLength = 2048;             // 指定列的長度
            columnOpts.TimeStamp.NonClusteredIndex = true;      // 去掉時間戳的聚集索引
            // 初始化日志的共享實例
            Log.Logger = new LoggerConfiguration()
                .MinimumLevel.Debug()
                .Enrich.FromLogContext()
                .WriteTo.MSSqlServer(
                        connectionString: ConfigurationManager.ConnectionStrings["Default"].ConnectionString,
                        sinkOptions: sinkOpts,
                        columnOptions: columnOpts
                 ).CreateLogger();
            // 寫入日志
            Log.Information("Info");

執(zhí)行代碼后,發(fā)現(xiàn)日志表并沒有添加到數(shù)據(jù)庫,也沒有任何異常信息,我們可以添加以下代碼調試Serilog

Serilog.Debugging.SelfLog.Enable(msg =>
            {
                Debug.Print(msg);
                Debugger.Break();
            });

獲取到如下的錯誤信息:

2022-11-26T09:34:53.6107406Z Unable to write 1 log events to the database due to following error: A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - 證書鏈是由不受信任的頒發(fā)機構頒發(fā)的。)

需要在連接字符串添加信任服務器證書的配置:TrustServerCertificate=True;

就能在SqlServer中創(chuàng)建日志表并寫入日志。

到此這篇關于C# 使用Serilog日志框架的文章就介紹到這了,更多相關C# Serilog日志框架內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解C# Socket異步通信實例

    詳解C# Socket異步通信實例

    本篇文章主要介紹了C# Socket異步通信,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • c#使用wmi查詢usb設備信息示例

    c#使用wmi查詢usb設備信息示例

    這篇文章主要介紹了c#使用wmi查詢usb設備信息示例,大家參考使用吧
    2014-01-01
  • C#實現(xiàn)自定義FTP操作封裝類實例

    C#實現(xiàn)自定義FTP操作封裝類實例

    這篇文章主要介紹了C#實現(xiàn)自定義FTP操作封裝類,涉及C#操作FTP的連接、傳輸、下載等操作的實現(xiàn)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-03-03
  • C#實現(xiàn)密碼驗證與輸錯密碼賬戶鎖定

    C#實現(xiàn)密碼驗證與輸錯密碼賬戶鎖定

    這篇文章介紹了C#實現(xiàn)密碼驗證與輸錯密碼賬戶鎖定的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#序列化與反序列化集合對象并進行版本控制

    C#序列化與反序列化集合對象并進行版本控制

    這篇文章介紹了C#序列化與反序列化集合對象并實現(xiàn)版本控制的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • 詳解WPF如何動態(tài)生成DataGrid的行和列

    詳解WPF如何動態(tài)生成DataGrid的行和列

    在日常開發(fā)中,DataGrid作為二維表格,非常適合數(shù)據(jù)的展示和統(tǒng)計,本文以一些簡單的小例子,簡述在WPF開發(fā)中,如何動態(tài)生成DataGrid的行和列,需要的可以了解下
    2024-02-02
  • Unity調用打印機打印圖片

    Unity調用打印機打印圖片

    這篇文章主要為大家詳細介紹了Unity通過調用打印機打印圖片的代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C#中類的異常處理詳解

    C#中類的異常處理詳解

    大家好,本篇文章主要講的是C#中類的異常處理詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • unity實現(xiàn)物體延時出現(xiàn)

    unity實現(xiàn)物體延時出現(xiàn)

    這篇文章主要為大家詳細介紹了unity實現(xiàn)物體延時出現(xiàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • C#實現(xiàn)的WINDOWS登錄功能示例

    C#實現(xiàn)的WINDOWS登錄功能示例

    這篇文章主要介紹了C#實現(xiàn)的WINDOWS登錄功能,結合實例形式分析了簡單的Windows圖形化登陸功能實現(xiàn)技巧,需要的朋友可以參考下
    2017-08-08

最新評論