SeriLog学习(一)

学习SeriLog(一)

  • SeriLog的创建
  • 在线文档
  • 一个完整的例子

SeriLog的创建

SeriLog项目在Github上的说明Readme,使用NuGet包管理器控制台安装。

Install-Package Serilog
Install-Package Serilog.Sinks.Console
Install-Package Serilog.Sinks.File

创建动态实例

var log = new LoggerConfiguration()
    .WriteTo.Console()
    .WriteTo.File("log.txt")
    .CreateLogger();

log.Information("Hello, Serilog!");

创建全局静态实例

		Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Information()
            .WriteTo.Console()
            .WriteTo.File("log.txt",
                rollingInterval: RollingInterval.Day,
                rollOnFileSizeLimit: true)
            .CreateLogger();
            
        Log.Information("Hello, Serilog!");
        
        Log.CloseAndFlush();

一个简单的模板

			//日志的输出模板
            string Logformat = @"{Timestamp:yyyy-MM-dd HH:mm-dd }[{Level:u3}] {Message:lj}{NewLine}";
            //类似创建一个管道
            var log = new LoggerConfiguration()
                //设置最低等级
                .MinimumLevel.Debug()     
                //将事件发送到控制台并展示
                .WriteTo.Console(outputTemplate:Logformat)
                .CreateLogger();
                //
            Log.Logger = log;
            
           //这里因为设置了最低等级为Debug,
            //所以比Debug低的Verbose不会展示在控制台
            Log.Verbose("这是一个Verbose");
            Log.Information("开始");
            int a = 0;
            int b = 2;
            try
            {
                Log.Debug("计算两者相除");
                Console.WriteLine(b / a);
            }catch(Exception ex)
            {
                Log.Error(ex, "计算出现意外的错误");
            }
            Log.Information("结束");

在线文档

帮助文档

一个完整的例子

using System;
using System.Text;
using System.Diagnostics;
using Serilog;
namespace SerilogConsole
{
    class Program
    {
        static void Main()
        {
            // 创建全局静态实例
            Log.Logger = new LoggerConfiguration()
                //设置最低等级
                .MinimumLevel.Verbose()
                //将事件发送到文件
                .WriteTo.File(@".\Log\Log.txt",     // 日志文件名
                    outputTemplate:                    // 设置输出格式,显示详细异常信息
                    @"{Timestamp:yyyy-MM-dd HH:mm-ss.fff }[{Level:u3}] {Message:lj}{NewLine}{Exception}", 
                    rollingInterval: RollingInterval.Day,   // 日志按月保存
                    rollOnFileSizeLimit: true,              // 限制单个文件的最大长度
                    encoding:Encoding.UTF8,                 // 文件字符编码
                    retainedFileCountLimit:10,              // 最大保存文件数
                    fileSizeLimitBytes:10*1024)                // 最大单个文件长度
                .CreateLogger();
            
            var stopWatch = new Stopwatch();
            stopWatch.Start();
            Log.Verbose("Hello SeriLog!");
            Log.Information("开始测试");

            for (var i = 0; i < 1000; i++)  // 产生1000次异常测试
            {
                try
                {
                    Log.Debug("抛出异常");
                    throw new InvalidProgramException("程序错误。");
                }
                catch (Exception e)
                {
                    Log.Error(e, "捕获异常");
                }
            }
            stopWatch.Stop();
            Log.Information($"结束测试, 共运行{stopWatch.ElapsedMilliseconds}ms。");
            Log.CloseAndFlush();

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
    }
}

运行产生的日志文件:
SeriLog学习(一)_第1张图片
可看到一共产生了25个日志文件,每个文件最大10K,只保留最新的10个文件。

你可能感兴趣的:(CSharp,编程)