Skip to content

Commit a55333c

Browse files
committed
Add log table.
1 parent 36e7485 commit a55333c

File tree

14 files changed

+538
-116
lines changed

14 files changed

+538
-116
lines changed

src/Serilog.Ui.Web/Controllers/LogsController.cs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
using Microsoft.AspNetCore.Mvc;
22
using Serilog.Ui.Core;
33
using Serilog.Ui.Web.ViewModel;
4+
using System.IO;
5+
using System.Text;
46
using System.Threading.Tasks;
57

68
namespace Serilog.Ui.Web.Controllers
79
{
810
public class LogsController : Controller
911
{
12+
private static string _scripts;
13+
private static string _styles;
1014
private readonly IDataProvider _dataProvider;
1115

1216
public LogsController(IDataProvider dataProvider)
@@ -23,7 +27,36 @@ public async Task<IActionResult> Index(int page = 1, int count = 20)
2327
Logs = logs
2428
};
2529

30+
GetResources();
31+
2632
return View(viewModel);
2733
}
34+
35+
private void GetResources()
36+
{
37+
if (_styles != null)
38+
{
39+
ViewData["Styles"] = _styles;
40+
ViewData["Scripts"] = _scripts;
41+
return;
42+
}
43+
44+
_styles = SetResource("Serilog.Ui.Web.wwwroot.css.main.css");
45+
ViewData["Styles"] = _styles;
46+
47+
_scripts = SetResource("Serilog.Ui.Web.wwwroot.js.main.js");
48+
ViewData["Scripts"] = _scripts;
49+
}
50+
51+
private string SetResource(string resourceName)
52+
{
53+
var resourceStream = GetType().Assembly.GetManifestResourceStream(resourceName);
54+
var resource = string.Empty;
55+
56+
using var reader = new StreamReader(resourceStream, Encoding.UTF8);
57+
resource += reader.ReadToEnd();
58+
59+
return resource;
60+
}
2861
}
2962
}

src/Serilog.Ui.Web/Serilog.Ui.Web.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@
1414
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.3" />
1515
</ItemGroup>
1616

17+
<ItemGroup>
18+
<EmbeddedResource Include="wwwroot\**\*.css" />
19+
<EmbeddedResource Include="wwwroot\**\*.js" />
20+
</ItemGroup>
21+
1722
<ItemGroup>
1823
<ProjectReference Include="..\Serilog.Ui.Core\Serilog.Ui.Core.csproj" />
1924
</ItemGroup>

src/Serilog.Ui.Web/Views/Logs/Index.cshtml

Lines changed: 94 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,100 @@
33
@{
44
ViewData["Title"] = "Log List";
55
Layout = "~/Views/Shared/_LogLayout.cshtml";
6+
var levelClass = string.Empty;
7+
var totalPages = Model.LogCount / 20;
68
}
79
<h1>Log List</h1>
810

9-
<p>Use this page to detail your site's privacy policy.</p>
11+
<div class="row">
12+
<div class="col-sm-12 col-md-6">
13+
<div class="table-select">
14+
<label>
15+
Show
16+
<select name="dtBasicExample_length" class="custom-select custom-select-sm form-control form-control-sm">
17+
<option value="10">10</option>
18+
<option value="25">25</option>
19+
<option value="50">50</option>
20+
<option value="100">100</option>
21+
</select> entries
22+
</label>
23+
</div>
24+
</div>
25+
<div class="col-sm-12 col-md-6">
26+
<div class="table-filter">
27+
<label>Search:<input type="search" class="form-control form-control-sm" placeholder="" aria-controls="dtBasicExample"></label>
28+
</div>
29+
</div>
30+
</div>
31+
32+
<table class="table" id="log-table">
33+
<thead class="thead-dark">
34+
<tr>
35+
<th scope="col">#</th>
36+
<th scope="col">Level</th>
37+
<th scope="col" style="width: 100px">Date</th>
38+
<th scope="col">Message</th>
39+
<th scope="col">Exception</th>
40+
<th scope="col">Properties</th>
41+
</tr>
42+
</thead>
43+
<tbody>
44+
@foreach (var log in Model.Logs)
45+
{
46+
switch (log.Level)
47+
{
48+
case "Verbose":
49+
case "Debug":
50+
levelClass = "bg-success";
51+
break;
52+
case "Information":
53+
levelClass = "bg-primary";
54+
break;
55+
case "Warning":
56+
levelClass = "bg-warning";
57+
break;
58+
case "Error":
59+
levelClass = "bg-danger";
60+
break;
61+
}
62+
63+
<tr>
64+
<th scope="row">@log.Id</th>
65+
<td class="text-center"><span style="padding: 5px;" class="@levelClass text-white">@log.Level</span></td>
66+
<td class="text-center">@log.Timestamp</td>
67+
<td>
68+
<span class="overflow-auto"> @log.Message</span>
69+
</td>
70+
<td class="text-center">@log.Exception</td>
71+
<td class="text-center"><a href="#" title="Click to view">View</a></td>
72+
</tr>
73+
}
74+
</tbody>
75+
</table>
76+
<div class="row">
77+
<div class="col-sm-12 col-md-5">
78+
<div class="table-paging-info">Showing 41 to 50 of @Model.LogCount entries</div>
79+
</div>
80+
<div class="col-sm-12 col-md-7">
81+
<div class="table-pagination">
82+
<ul class="pagination">
83+
<li class="paginate_button page-item previous" id="dtBasicExample_previous">
84+
<a href="#" aria-controls="dtBasicExample" data-dt-idx="0" tabindex="0" class="page-link">Previous</a>
85+
</li>
86+
<li class="paginate_button page-item ">
87+
<a href="#" aria-controls="dtBasicExample" data-dt-idx="1" tabindex="0" class="page-link">1</a>
88+
</li>
89+
<li class="paginate_button page-item ">
90+
<a href="#" aria-controls="dtBasicExample" data-dt-idx="2" tabindex="0" class="page-link">2</a>
91+
</li>
92+
<li class="paginate_button page-item ">
93+
<a href="#" aria-controls="dtBasicExample" data-dt-idx="3" tabindex="0" class="page-link">3</a>
94+
</li>
95+
<li class="paginate_button page-item "><a href="#" aria-controls="dtBasicExample" data-dt-idx="4" tabindex="0" class="page-link">4</a></li>
96+
<li class="paginate_button page-item active"><a href="#" aria-controls="dtBasicExample" data-dt-idx="5" tabindex="0" class="page-link">5</a></li>
97+
<li class="paginate_button page-item "><a href="#" aria-controls="dtBasicExample" data-dt-idx="6" tabindex="0" class="page-link">6</a></li>
98+
<li class="paginate_button page-item next" id="dtBasicExample_next"><a href="#" aria-controls="dtBasicExample" data-dt-idx="7" tabindex="0" class="page-link">Next</a></li>
99+
</ul>
100+
</div>
101+
</div>
102+
</div>

src/Serilog.Ui.Web/Views/Shared/_LogLayout.cshtml

Lines changed: 63 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,72 @@
33
<head>
44
<meta charset="utf-8" />
55
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6-
<title>@ViewData["Title"] - SampleWebApplication</title>
7-
<link rel="stylesheet" href="~/css/bootstrap.min.css" />
8-
<link rel="stylesheet" href="~/css/log.css" />
6+
<title>@ViewData["Title"] - Serilog UI</title>
7+
<link href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700,800,900" rel="stylesheet">
8+
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
9+
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
10+
<style>
11+
@Html.Raw(ViewData["Styles"])
12+
</style>
913
</head>
1014
<body>
11-
<header>
12-
</header>
13-
<div class="container">
14-
<main role="main" class="pb-3">
15-
@RenderBody()
16-
</main>
17-
</div>
15+
<div class="wrapper d-flex align-items-stretch">
16+
<nav id="sidebar" class="active">
17+
<h1>
18+
<a href="/logs" class="logo">LU</a>
19+
<a href="/logs" class="logo">Log UI</a>
20+
</h1>
21+
<ul class="list-unstyled components mb-5">
22+
<li class="active">
23+
<a href="/"><span class="fa fa-home"></span> Home</a>
24+
</li>
25+
</ul>
26+
27+
<div class="footer">
28+
<p>
29+
Copyright &copy;
30+
<script>document.write(new Date().getFullYear());</script> All rights reserved | This template is made with <i class="icon-heart" aria-hidden="true"></i> by <a href="https://colorlib.com" target="_blank">Colorlib.com</a>
31+
</p>
32+
</div>
33+
</nav>
34+
35+
<!-- Page Content -->
36+
<div id="content" class="p-4 p-md-5">
37+
<nav class="navbar navbar-expand-lg navbar-light bg-light">
38+
<div class="container-fluid">
1839

19-
<footer class="border-top footer text-muted">
20-
<div class="container">
21-
&copy; @DateTime.Now.Year - <a href="https://github.com/mo-esmp/serilog-ui" target="_blank">Serilog UI</a>
40+
<button type="button" id="sidebarCollapse" class="btn btn-primary">
41+
<i class="fa fa-bars"></i>
42+
<span class="sr-only">Toggle Menu</span>
43+
</button>
44+
<button class="btn btn-dark d-inline-block d-lg-none ml-auto" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
45+
<i class="fa fa-bars"></i>
46+
</button>
47+
48+
<div class="collapse navbar-collapse" id="navbarSupportedContent">
49+
<ul class="nav navbar-nav ml-auto">
50+
<li class="nav-item active">
51+
<a class="nav-link" href="#">Home</a>
52+
</li>
53+
<li class="nav-item">
54+
<a class="nav-link" href="#">About</a>
55+
</li>
56+
<li class="nav-item">
57+
<a class="nav-link" href="#">Portfolio</a>
58+
</li>
59+
<li class="nav-item">
60+
<a class="nav-link" href="#">Contact</a>
61+
</li>
62+
</ul>
63+
</div>
64+
</div>
65+
</nav>
66+
@RenderBody()
2267
</div>
23-
</footer>
24-
<script src="~/js/jquery.min.js"></script>
25-
<script src="~/js/bootstrap.bundle.min.js"></script>
26-
<script src="~/js/log.js" asp-append-version="true"></script>
27-
@RenderSection("Scripts", required: false)
68+
</div>
69+
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
70+
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
71+
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
72+
<script>@Html.Raw(ViewData["Scripts"])</script>
2873
</body>
2974
</html>

src/Serilog.Ui.Web/wwwroot/css/bootstrap.min.css

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/Serilog.Ui.Web/wwwroot/css/bootstrap.min.css.map

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/Serilog.Ui.Web/wwwroot/css/log.css

Lines changed: 0 additions & 74 deletions
This file was deleted.

0 commit comments

Comments
 (0)