Skip to content

Commit 436f568

Browse files
committed
Fix merge conflict.
2 parents b11364e + 8ade21e commit 436f568

File tree

9 files changed

+102
-36
lines changed

9 files changed

+102
-36
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ Then install one of the providers based upon your sink:
1818
| Provider Name | Install | Package |
1919
| ------------------------------ | ------------------------------------------------ | ------------------------------------------------------------------------------ |
2020
| Serilog.UI.MsSqlServerProvider | `Install-Package Serilog.UI.MsSqlServerProvider` | [NuGet package](https://www.nuget.org/packages/Serilog.UI.MsSqlServerProvider) |
21-
| Serilog.UI.PostgreSqlProvider | `Install-Package Serilog.UI.MySqlProvider` | [NuGet package](https://www.nuget.org/packages/Serilog.UI.MySqlProvider) |
21+
| Serilog.UI.MySqlProvider | `Install-Package Serilog.UI.MySqlProvider` | [NuGet package](https://www.nuget.org/packages/Serilog.UI.MySqlProvider) |
2222
| Serilog.UI.PostgreSqlProvider | `Install-Package Serilog.UI.PostgreSqlProvider` | [NuGet package](https://www.nuget.org/packages/Serilog.UI.PostgreSqlProvider) |
2323
| Serilog.UI.MongoDbProviderr | `Install-Package Serilog.UI.MongoDbProvider` | [NuGet package](https://www.nuget.org/packages/Serilog.UI.MongoDbProvider) |
24-
| Serilog.UI.ElasticSearchDbProvider | `Install-Package Serilog.UI.ElasticSearchDbProvider` | [NuGet package](https://www.nuget.org/packages/Serilog.UI.ElasticSearchDbProvider) |
24+
| Serilog.UI.ElasticSearchProvider | `Install-Package Serilog.UI.ElasticSearcProvider` | [NuGet package](https://www.nuget.org/packages/Serilog.UI.ElasticSearchProvider) |
2525

2626
Then, add `AddSerilogUi()` to `IServiceCollection` in `Startup.ConfigureServices` method:
2727

samples/SampleWebApp/SampleWebApp.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<ItemGroup>
99
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="5.0.1" />
10-
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.1" />
10+
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.9" />
1111
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="5.0.1" />
1212
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="5.0.1" />
1313
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.1" />

src/Serilog.Ui.MongoDbProvider/Extensions/SerilogUiOptionBuilderExtensions.cs

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,58 @@
11
using Microsoft.Extensions.DependencyInjection;
2+
using Microsoft.Extensions.DependencyInjection.Extensions;
23
using MongoDB.Driver;
34
using Serilog.Ui.Core;
45
using System;
56

67
namespace Serilog.Ui.MongoDbProvider
78
{
89
/// <summary>
9-
/// MongoDB data provider specific extension methods for <see cref="SerilogUiOptionsBuilder"/>.
10+
/// SerilogUI option builder extensions.
1011
/// </summary>
1112
public static class SerilogUiOptionBuilderExtensions
1213
{
1314
/// <summary>
14-
/// Configures the SerilogUi to connect to a MongoDB database.
15+
/// Adds MongoDB log data provider.
1516
/// </summary>
16-
/// <param name="optionsBuilder"> The options builder. </param>
17-
/// <param name="connectionString"> The connection string. </param>
18-
/// <param name="databaseName"> Name of the data table. </param>
19-
/// <param name="collectionName"> Name of the collection name. </param>
20-
/// <exception cref="ArgumentNullException"> throw if connectionString is null </exception>
21-
/// <exception cref="ArgumentNullException"> throw is databaseName is null </exception>
22-
/// <exception cref="ArgumentNullException"> throw is collectionName is null </exception>
17+
/// <param name="optionsBuilder">The options builder.</param>
18+
/// <param name="connectionString">The connection string.</param>
19+
/// <param name="collectionName">Name of the collection.</param>
20+
/// <exception cref="ArgumentNullException">connectionString</exception>
21+
/// <exception cref="ArgumentNullException">collectionName</exception>
22+
public static void UseMongoDb(
23+
this SerilogUiOptionsBuilder optionsBuilder,
24+
string connectionString,
25+
string collectionName
26+
)
27+
{
28+
if (string.IsNullOrEmpty(connectionString))
29+
throw new ArgumentNullException(nameof(connectionString));
30+
31+
if (string.IsNullOrEmpty(collectionName))
32+
throw new ArgumentNullException(nameof(collectionName));
33+
34+
var mongoProvider = new MongoDbOptions
35+
{
36+
ConnectionString = connectionString,
37+
DatabaseName = MongoUrl.Create(connectionString).DatabaseName,
38+
CollectionName = collectionName
39+
};
40+
41+
((ISerilogUiOptionsBuilder)optionsBuilder).Services.AddSingleton(mongoProvider);
42+
((ISerilogUiOptionsBuilder)optionsBuilder).Services.TryAddSingleton<IMongoClient>(o => new MongoClient(connectionString));
43+
((ISerilogUiOptionsBuilder)optionsBuilder).Services.AddScoped<IDataProvider, MongoDbDataProvider>();
44+
}
45+
46+
/// <summary>
47+
/// Adds MongoDB log data provider.
48+
/// </summary>
49+
/// <param name="optionsBuilder">The options builder.</param>
50+
/// <param name="connectionString">The connection string without database name.</param>
51+
/// <param name="databaseName">Name of the database.</param>
52+
/// <param name="collectionName">Name of the collection.</param>
53+
/// <exception cref="ArgumentNullException">connectionString</exception>
54+
/// <exception cref="ArgumentNullException">databaseName</exception>
55+
/// <exception cref="ArgumentNullException">collectionName</exception>
2356
public static void UseMongoDb(
2457
this SerilogUiOptionsBuilder optionsBuilder,
2558
string connectionString,

src/Serilog.Ui.MongoDbProvider/MongoDbDataProvider.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public MongoDbDataProvider(IMongoClient client, MongoDbOptions options)
1717
if (options is null) throw new ArgumentNullException(nameof(options));
1818

1919
_collection = client.GetDatabase(options.DatabaseName).GetCollection<MongoDbLogModel>(options.CollectionName);
20+
var s = _collection.CollectionNamespace;
2021
}
2122

2223
public async Task<(IEnumerable<LogModel>, int)> FetchDataAsync(
@@ -27,12 +28,12 @@ public MongoDbDataProvider(IMongoClient client, MongoDbOptions options)
2728
DateTime? startDate = null,
2829
DateTime? endDate = null)
2930
{
30-
var logsTask = GetLogsAsync(page - 1, count, level, searchCriteria, startDate, endDate);
31-
var logCountTask = CountLogsAsync(level, searchCriteria, startDate, endDate);
31+
var logsTask = await GetLogsAsync(page - 1, count, level, searchCriteria, startDate, endDate);
32+
var logCountTask = await CountLogsAsync(level, searchCriteria, startDate, endDate);
3233

33-
await Task.WhenAll(logsTask, logCountTask);
34+
//await Task.WhenAll(logsTask, logCountTask);
3435

35-
return (await logsTask, await logCountTask);
36+
return (logsTask, logCountTask);
3637
}
3738

3839
private async Task<IEnumerable<LogModel>> GetLogsAsync(
@@ -46,7 +47,8 @@ private async Task<IEnumerable<LogModel>> GetLogsAsync(
4647
var builder = Builders<MongoDbLogModel>.Filter.Empty;
4748
GenerateWhereClause(ref builder, level, searchCriteria, startDate, endDate);
4849

49-
var logs = await _collection.Find(builder)
50+
var logs = await _collection
51+
.Find(builder)
5052
.Skip(count * page)
5153
.Limit(count)
5254
.SortByDescending(entry => entry.Timestamp)

src/Serilog.Ui.MongoDbProvider/MongoDbLogModel.cs

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
using System;
2-
using MongoDB.Bson.Serialization.Attributes;
1+
using MongoDB.Bson.Serialization.Attributes;
2+
using Newtonsoft.Json;
33
using Serilog.Ui.Core;
4+
using System;
5+
using System.Collections.Generic;
6+
using System.Dynamic;
47

58
namespace Serilog.Ui.MongoDbProvider
69
{
@@ -15,9 +18,12 @@ public class MongoDbLogModel
1518
public string RenderedMessage { get; set; }
1619

1720
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
18-
public DateTime Timestamp { get; set; }
21+
public DateTime? Timestamp { get; set; }
1922

20-
public string Exception { get; set; }
23+
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
24+
public DateTime UtcTimeStamp { get; set; }
25+
26+
public dynamic Exception { get; set; }
2127

2228
public object Properties { get; set; }
2329

@@ -28,11 +34,30 @@ internal LogModel ToLogModel()
2834
RowNo = Id,
2935
Level = Level,
3036
Message = RenderedMessage,
31-
Timestamp = Timestamp,
32-
Exception = Exception,
37+
Timestamp = Timestamp ?? UtcTimeStamp,
38+
Exception = GetException(Exception),
3339
Properties = Newtonsoft.Json.JsonConvert.SerializeObject(Properties),
3440
PropertyType = "json"
3541
};
3642
}
43+
44+
private object GetException(dynamic exception)
45+
{
46+
if (exception == null || IsPropertyExist(Exception, "_csharpnull"))
47+
return null;
48+
49+
if (exception is string)
50+
return exception;
51+
52+
return Newtonsoft.Json.JsonConvert.SerializeObject(Exception, Formatting.Indented);
53+
}
54+
55+
private bool IsPropertyExist(dynamic obj, string name)
56+
{
57+
if (obj is ExpandoObject)
58+
return ((IDictionary<string, object>)obj).ContainsKey(name);
59+
60+
return obj?.GetType()?.GetProperty(name) != null;
61+
}
3762
}
3863
}
Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

3-
<PropertyGroup>
4-
<TargetFramework>netstandard2.0</TargetFramework>
5-
<Version>2.1.0</Version>
6-
</PropertyGroup>
3+
<PropertyGroup>
4+
<TargetFramework>netstandard2.0</TargetFramework>
5+
<Version>2.1.0</Version>
6+
</PropertyGroup>
77

8-
<ItemGroup>
9-
<PackageReference Include="MongoDB.Driver" Version="2.11.5" />
10-
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
11-
</ItemGroup>
8+
<ItemGroup>
9+
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
10+
<PackageReference Include="MongoDB.Driver" Version="2.11.5" />
11+
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
12+
</ItemGroup>
1213

13-
<ItemGroup>
14-
<ProjectReference Include="..\Serilog.Ui.Core\Serilog.Ui.Core.csproj" />
15-
</ItemGroup>
14+
<ItemGroup>
15+
<ProjectReference Include="..\Serilog.Ui.Core\Serilog.Ui.Core.csproj" />
16+
</ItemGroup>
1617
</Project>

src/Serilog.Ui.MongoDbProvider/Serilog.Ui.MongoDbProvider.nuspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<tags>serilog serilog-ui serilog.sinks.mongodb</tags>
1616
<dependencies>
1717
<group targetFramework=".NETStandard2.0">
18+
<dependency id="Microsoft.CSharp" version="4.7.0" />
1819
<dependency id="Microsoft.Extensions.DependencyInjection.Abstractions" version="3.1.3" exclude="Build,Analyzers" />
1920
<dependency id="MongoDB.Driver" version="2.11.5" exclude="Build,Analyzers" />
2021
<dependency id="Newtonsoft.Json" version="12.0.3" exclude="Build,Analyzers" />

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<TargetFrameworks>netcoreapp3.1;net5.0</TargetFrameworks>
5-
<Version>2.1.0</Version>
5+
<Version>2.1.1</Version>
66
</PropertyGroup>
77

88
<ItemGroup>

src/Serilog.Ui.Web/wwwroot/dist/main.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ const fetchData = () => {
159159
<td class="text-center"><span class="log-level text-white ${levelClass(log.level)}">${log.level}</span></td>
160160
<td class="text-center">${formatDate(log.timestamp)}</td>
161161
<td class="log-message">
162-
<span class="overflow-auto"><truncate length="100">${truncateString(log.message, 100)}</truncate></span>
162+
<span class="overflow-auto"><truncate length="100">${truncateString(cleanHtmlTags(log.message), 100)}</truncate></span>
163163
</td>
164164
<td class="text-center">
165165
${exception}
@@ -289,4 +289,8 @@ const initTokenUi = () => {
289289
$("#tokenContainer").text("*********");
290290
$("#saveJwt").text("Clear").data("saved", "true");
291291
$("#jwtModalBtn").find("i").removeClass("fa-unlock").addClass("fa-lock");
292+
}
293+
294+
const cleanHtmlTags= (str)=> {
295+
return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
292296
}

0 commit comments

Comments
 (0)