实例介绍
Sejil是一个强大的库,它允许开发者直接在ASP.net core应用中捕获、查看和过滤日志事件。它支持结构化日志、查询以及保存日志事件查询。
快速开始
首先,通过以下命令安装Sejil包:
dotnet add package Sejil --version 3.0.4
然后,在Program.cs
中添加以下代码:
public static IWebHost BuildWebHost(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSejil() // <-- Add this line
.ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup<Startup>());
在Startup.cs
中添加以下代码:
using Sejil;
public class Startup
{
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
app.UseSejil(); // <-- Add this line
// ...
}
}
通过浏览器访问 http://your-app-url/sejil
来查看应用的日志。
日志过滤
Sejil不仅支持通过UI进行日志级别、异常和日期范围的过滤,还可以通过输入特定的搜索词来过滤日志。
例如,通过输入AboutController
或"some message"
来过滤日志。还可以使用特定属性来过滤,如SourceContext = 'Microsoft.AspNetCore.Hosting.Internal.WebHost'
。
功能和截图
Sejil提供了查看应用日志、查看特定日志条目的属性、查询日志、混合多个过滤器以进一步限制结果、保存查询以供后用以及加载已保存查询等功能。
构建
构建项目非常简单,只需要克隆仓库然后运行以下命令:
git clone https://github.com/alaatm/Sejil.git
cd ./Sejil
dotnet tool restore
dotnet cake
之后可以运行示例应用:
cd ./sample/SampleBasic
dotnet run
【实例截图】
【核心代码】
文件清单
└── Sejil-9a445683ccecfa54005df0d86f79d1d48d4ce90b
├── assets
│ ├── 001-screenshot-main_opt.jpg
│ ├── 002-screenshot-properties_opt.jpg
│ ├── 003-screenshot-query_opt.jpg
│ ├── 004-screenshot-query-and-filter_opt.jpg
│ ├── 005-screenshot-save-query_opt.jpg
│ └── 006-screenshot-load-query_opt.jpg
├── build.cake
├── LICENSE
├── README.md
├── sample
│ ├── SampleBasic
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── Controllers
│ │ │ └── HomeController.cs
│ │ ├── Models
│ │ │ └── ErrorViewModel.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── SampleBasic.csproj
│ │ ├── Startup.cs
│ │ ├── Views
│ │ │ ├── Home
│ │ │ │ ├── About.cshtml
│ │ │ │ ├── Contact.cshtml
│ │ │ │ └── Index.cshtml
│ │ │ ├── Shared
│ │ │ │ ├── Error.cshtml
│ │ │ │ └── _Layout.cshtml
│ │ │ ├── _ViewImports.cshtml
│ │ │ └── _ViewStart.cshtml
│ │ └── wwwroot
│ │ ├── css
│ │ │ └── site.css
│ │ ├── favicon.ico
│ │ ├── images
│ │ │ ├── banner1.svg
│ │ │ ├── banner2.svg
│ │ │ ├── banner3.svg
│ │ │ └── banner4.svg
│ │ ├── js
│ │ │ └── site.js
│ │ └── lib
│ │ ├── css
│ │ │ └── bootstrap.min.css
│ │ └── fonts
│ │ ├── glyphicons-halflings-regular.eot
│ │ ├── glyphicons-halflings-regular.svg
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ └── glyphicons-halflings-regular.woff2
│ ├── SampleBasicAuth
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── Controllers
│ │ │ └── HomeController.cs
│ │ ├── Models
│ │ │ └── ErrorViewModel.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── SampleBasicAuth.csproj
│ │ ├── Startup.cs
│ │ ├── Views
│ │ │ ├── Home
│ │ │ │ ├── About.cshtml
│ │ │ │ ├── Contact.cshtml
│ │ │ │ └── Index.cshtml
│ │ │ ├── Shared
│ │ │ │ ├── Error.cshtml
│ │ │ │ └── _Layout.cshtml
│ │ │ ├── _ViewImports.cshtml
│ │ │ └── _ViewStart.cshtml
│ │ └── wwwroot
│ │ ├── css
│ │ │ └── site.css
│ │ ├── favicon.ico
│ │ ├── images
│ │ │ ├── banner1.svg
│ │ │ ├── banner2.svg
│ │ │ ├── banner3.svg
│ │ │ └── banner4.svg
│ │ ├── js
│ │ │ └── site.js
│ │ └── lib
│ │ ├── css
│ │ │ └── bootstrap.min.css
│ │ └── fonts
│ │ ├── glyphicons-halflings-regular.eot
│ │ ├── glyphicons-halflings-regular.svg
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ └── glyphicons-halflings-regular.woff2
│ ├── SampleNet6
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── Pages
│ │ │ ├── Error.cshtml
│ │ │ ├── Error.cshtml.cs
│ │ │ ├── Index.cshtml
│ │ │ ├── Index.cshtml.cs
│ │ │ ├── Privacy.cshtml
│ │ │ ├── Privacy.cshtml.cs
│ │ │ ├── Shared
│ │ │ │ ├── _Layout.cshtml
│ │ │ │ ├── _Layout.cshtml.css
│ │ │ │ └── _ValidationScriptsPartial.cshtml
│ │ │ ├── _ViewImports.cshtml
│ │ │ └── _ViewStart.cshtml
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── SampleNet6.csproj
│ │ └── wwwroot
│ │ ├── css
│ │ │ └── site.css
│ │ ├── favicon.ico
│ │ ├── js
│ │ │ └── site.js
│ │ └── lib
│ │ ├── bootstrap
│ │ │ └── LICENSE
│ │ ├── jquery
│ │ │ └── LICENSE.txt
│ │ ├── jquery-validation
│ │ │ └── LICENSE.md
│ │ └── jquery-validation-unobtrusive
│ │ ├── jquery.validate.unobtrusive.js
│ │ ├── jquery.validate.unobtrusive.min.js
│ │ └── LICENSE.txt
│ └── SampleOIDCAuth
│ ├── appsettings.Development.json
│ ├── appsettings.json
│ ├── Controllers
│ │ └── HomeController.cs
│ ├── Models
│ │ └── ErrorViewModel.cs
│ ├── Program.cs
│ ├── Properties
│ │ └── launchSettings.json
│ ├── SampleOIDCAuth.csproj
│ ├── Startup.cs
│ ├── Views
│ │ ├── Home
│ │ │ ├── About.cshtml
│ │ │ ├── Contact.cshtml
│ │ │ └── Index.cshtml
│ │ ├── Shared
│ │ │ ├── Error.cshtml
│ │ │ └── _Layout.cshtml
│ │ ├── _ViewImports.cshtml
│ │ └── _ViewStart.cshtml
│ └── wwwroot
│ ├── css
│ │ └── site.css
│ ├── favicon.ico
│ ├── images
│ │ ├── banner1.svg
│ │ ├── banner2.svg
│ │ ├── banner3.svg
│ │ └── banner4.svg
│ ├── js
│ │ └── site.js
│ └── lib
│ ├── css
│ │ └── bootstrap.min.css
│ └── fonts
│ ├── glyphicons-halflings-regular.eot
│ ├── glyphicons-halflings-regular.svg
│ ├── glyphicons-halflings-regular.ttf
│ ├── glyphicons-halflings-regular.woff
│ └── glyphicons-halflings-regular.woff2
├── Sejil.sln
├── src
│ ├── Sejil.Client
│ │ ├── config-overrides.js
│ │ ├── package.json
│ │ ├── package-lock.json
│ │ ├── public
│ │ │ └── index.html
│ │ ├── src
│ │ │ ├── api.ts
│ │ │ ├── App.css
│ │ │ ├── App.tsx
│ │ │ ├── components
│ │ │ │ ├── Content
│ │ │ │ │ ├── Entry.css
│ │ │ │ │ ├── Entry.tsx
│ │ │ │ │ ├── index.css
│ │ │ │ │ ├── index.tsx
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── Header
│ │ │ │ │ ├── DateFilter.tsx
│ │ │ │ │ ├── index.css
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── index.ts
│ │ │ │ ├── shared
│ │ │ │ │ ├── DatePicker.tsx
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── InfiniteScroll.js
│ │ │ │ │ └── prompt.tsx
│ │ │ │ └── Sidebar
│ │ │ │ ├── index.css
│ │ │ │ ├── index.tsx
│ │ │ │ ├── LogExceptionFilter.tsx
│ │ │ │ ├── LogLevelFilter.css
│ │ │ │ ├── LogLevelFilter.tsx
│ │ │ │ ├── SavedQueryList.css
│ │ │ │ ├── SavedQueryList.tsx
│ │ │ │ ├── Settings.css
│ │ │ │ ├── Settings.tsx
│ │ │ │ ├── Title.css
│ │ │ │ ├── Title.tsx
│ │ │ │ ├── UserInfo.css
│ │ │ │ └── UserInfo.tsx
│ │ │ ├── Context
│ │ │ │ ├── index.tsx
│ │ │ │ ├── logQueryFilterReducer.ts
│ │ │ │ └── logQueryReducer.ts
│ │ │ ├── index.css
│ │ │ ├── index.tsx
│ │ │ ├── Models
│ │ │ │ └── index.ts
│ │ │ └── react-app-env.d.ts
│ │ └── tsconfig.json
│ └── Sejil.Server
│ ├── ApplicationBuilderExtensions.cs
│ ├── Configuration
│ │ └── Internal
│ │ ├── ISejilSettings.cs
│ │ └── SejilSettings.cs
│ ├── Data
│ │ ├── Internal
│ │ │ ├── ISejilRepository.cs
│ │ │ ├── ISejilSqlProvider.cs
│ │ │ ├── SejilRepository.cs
│ │ │ └── SejilSqlProvider.cs
│ │ └── Query
│ │ └── Internal
│ │ ├── CodeGenerator.cs
│ │ ├── Expr.cs
│ │ ├── Parser.cs
│ │ ├── QueryEngine.cs
│ │ ├── QueryEngineException.cs
│ │ ├── Scanner.cs
│ │ ├── Token.cs
│ │ └── TokenType.cs
│ ├── db.sql
│ ├── HostBuilderExtensions.cs
│ ├── Logging
│ │ ├── LoggerConfigurationExtensions.cs
│ │ └── Sinks
│ │ └── SejilSink.cs
│ ├── Models
│ │ └── Internal
│ │ ├── LogEntry.cs
│ │ ├── LogEntryProperty.cs
│ │ ├── LogQuery.cs
│ │ └── LogQueryFilter.cs
│ ├── ResourceHelper.cs
│ ├── Routing
│ │ └── Internal
│ │ ├── ISejilController.cs
│ │ └── SejilController.cs
│ ├── Sejil.csproj
│ ├── ServiceCollectionExtensions.cs
│ └── WebHostBuilderExtensions.cs
└── test
└── Sejil.Server.Test
├── ApplicationBuilderExtensionsTests.cs
├── Configuration
│ ├── SejilSettingsEnvDependantTests.cs
│ └── SejilSettingsTests.cs
├── Data
│ ├── Query
│ │ ├── ParserTests.cs
│ │ └── ScannerTests.cs
│ ├── SejilRepositoryTests.cs
│ └── SejilSqlProviderTests.cs
├── HostBuilderExtensionsTests.cs
├── Logging
│ ├── LoggerConfigurationExtensionsTests.cs
│ └── Sinks
│ └── SejilSinkTests.cs
├── Models
│ └── LogEntryTests.cs
├── Routing
│ └── SejilControllerTests.cs
├── Sejil.Test.csproj
├── ServiceCollectionExtensionsTests.cs
└── WebHostBuilderExtensionsTests.cs
90 directories, 204 files
标签:
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论