"pathFormat": "Logs/Warning/{Date}.txt", "RestrictedToMinimumLevel": "Warning", "rollingInterval": "Day", "outputTemplate": "{Timestamp:yyyy-MM-dd hh:mm:ss} || {Level} || {SourceContext:l} || {Message} || {Exception} || end {NewLine}"

看这个样子,pathFormat只能根据日期来区分,再看看如果在程序内配置如何:

Log.Logger = new LoggerConfiguration()
                .Enrich.FromLogContext()
                .MinimumLevel.Warning() // 生产最小记录级别
                .WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(p => p.Level == LogEventLevel.Debug).WriteTo.File(LogFilePath("Debug"), rollingInterval: RollingInterval.Day, outputTemplate: SerilogOutputTemplate))

网上找到例子,看上去Filter只能控制Level来区分目录,每个Level一个目录,还是不符合我的需求。

不过后来看到了Filter筛选对象是LogEvent,那么可以根据其属性Properties进行条件判断来区分目录,代码如下:

string LogFilePath(string LogEvent) => $@"{AppContext.BaseDirectory}Log/{LogEvent}/log.log";
Log.Logger = new LoggerConfiguration()
                .Enrich.FromLogContext()
                .WriteTo.Console() // 输出到控制台
                .MinimumLevel.Debug() // 测试最小记录级别
                .WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(p => {
                    var result = p.Properties.FirstOrDefault(c => c.Key == "SourceContext").Value;
                    if (result != null) {
                        return result.ToString().Contains("模块名");
                    return false;
                }).WriteTo
                .File(LogFilePath("模块目录"), rollingInterval: RollingInterval.Day, outputTemplate: SocketOutputTemplate))
                .CreateLogger();

这样就可以筛选某个模块的日志,将其归类到某个日志目录当中了。

当然创建日志的时候,也要命名好模块,代码如下:

public class Test
    public Test(ILoggerFactory LoggerFactory)
        var logger = LoggerFactory.CreateLogger("模块名");
        logger.LogDebug("Conch是最帅的男人!");

除此之外,LogEvent还有其他的属性,例如:Exception可以根据异常类型进行分类。具体可以在过滤器的Func<LogEvent, bool>委托内自由发挥。

核心的包是 Serilog 和 Serilog.AspNetCore 建议安装 Serilog.AspNetCore,几乎包含了Serilog常用的所有包 异步写入 Serilog.Sinks.Async 写入MSSQL Serilog.Sinks.MSSqlServer Install-Package Serilog.AspNetCore Install-Package Serilog # winform 安装 Install-Package Serilog.Sin FairPlay-密钥安全模块 什么是FairPlay-KSM? FairPlay-KSM是Apple DRM协议的NETCore实现。 根据苹果公司的说法,FairPlay Streaming(FPS)在macOS上安全地将密钥传送给Apple移动设备,Apple TV和Safari,从而可以播放加密的视频内容。 此实现可用作许可证加速器或spc-ckc调试器(部分实现)。 在哪里可以下载该库? FairPlay已打包为,因此您只需在项目中包括FoolishTech.FairPlay软件包即可。 dotnet add package FoolishTech.FairPlay 如何使用图书馆? 在使用该模块之前,您必须向Apple。 之后,您可以运行自己的HTTP许可证服务器。 查看我们的。 非常简单的许可证加速器 using System ; using System 在Visual Studio和Webpack中编译Sass文件 .NET Core MVC基础项目,支持使用Webpack的Sass,其中包括用于生产的最小化和自动前缀CSS。 尽管这是一个Core应用程序,但是相同的原理也适用于ASP.NET MVC应用程序。 您只需要稍微修改Webpack配置即可将CSS文件输出到Content目录。 您将需要安装Node和NPM。 您还将需要 。 打开命令提示符,将此仓库克隆并复制到项目中以安装JavaScript依赖项 git clone https://github.com/esausilva/netcore-sass-webpack.git cd netcore-sass-webpack\netcore-sass-webpack npm i 安装依赖项后,双击netcore-sass-webpack.sln以在Visual 我有一个.NET Core 2.0应用程序,可以在其中成功使用Serilog进行日志记录。现在,我想将一些数据库性能统计信息记录到一个单独的接收器中(它们不是用于调试的,这基本上是应用程序... 参考如下改为绝对路径后成功。 File Location When Running as a Windows Service is in System32 Directory · Issue #223 · serilog/serilog-sinks-file · GitHub ----- I had a very similar issue. In my 一、【JavaScript 基本数据类型】 JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型 "string"   "number"   "object"   "boolean"   "function"   "undefined" string类型 str.length var str = "123,ABC,900,rgy,rrrr";