using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Serilog.Events;
using Serilog;
using System;
using System.Collections.Generic;
using System.Text;
using Serilog.Sinks.SystemConsole.Themes;
using Serilog.Filters;
namespace Utility
{
public static class ServiceCollectionExtensions
{
const string template = "时间: {Timestamp:yyyy-MM-dd HH:mm:ss}{NewLine}来源: {SourceContext}{NewLine}内容: [{Level:u3}] {Message}{NewLine}{Exception}{NewLine}";
///
/// 添加配置Serilog
///
///
///
///
public static IServiceCollection AddConfigSerilog(this IServiceCollection services)
{
// 创建Serilog记录日志
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Fatal)
.MinimumLevel.Override("Quartz", LogEventLevel.Warning)
.MinimumLevel.Override("Serilog", LogEventLevel.Information)
// 全部日志写入到Console
.WriteTo.Console()
.WriteTo.Async(c => c.Console(
theme: AnsiConsoleTheme.Literate,
outputTemplate: template))
// Debug日志写入到文件
//.WriteTo.Async(c => c.File(
// path: "Logs/Debug_.txt",
// rollingInterval: RollingInterval.Day,
// fileSizeLimitBytes: 1024 * 1024 * 10,
// retainedFileCountLimit: 100,
// outputTemplate: template,
// restrictedToMinimumLevel: LogEventLevel.Debug))
// Information日志写入到文件
.WriteTo.Async(c => c.File(
path: "Logs/Information_.txt",
rollingInterval: RollingInterval.Day,
fileSizeLimitBytes: 1024 * 1024 * 10,
retainedFileCountLimit: 100,
outputTemplate: template,
restrictedToMinimumLevel: LogEventLevel.Information))
// Warning日志写入到文件
.WriteTo.Async(c => c.File(
path: "Logs/Warning_.txt",
rollingInterval: RollingInterval.Day,
fileSizeLimitBytes: 1024 * 1024 * 10,
retainedFileCountLimit: 100,
outputTemplate: template,
restrictedToMinimumLevel: LogEventLevel.Warning))
// Error日志写入到文件
.WriteTo.Async(c => c.File(
path: "Logs/Error_.txt",
rollingInterval: RollingInterval.Day,
fileSizeLimitBytes: 1024 * 1024 * 10,
retainedFileCountLimit: 1000,
outputTemplate: template,
restrictedToMinimumLevel: LogEventLevel.Error))
.CreateLogger();
services.AddSerilog();
return services;
}
}
}