Skip to content

Commit

Permalink
Cleanup simplify and rewrite to add .NET Core support.
Browse files Browse the repository at this point in the history
- 2 NuGet packages are now generated, ChromeLogger.AspNet and ChromeLogger.AspNetCore
  • Loading branch information
rwasef1830 authored and ChrisMissal committed Jul 24, 2020
1 parent 81b32a4 commit 6e45d1c
Show file tree
Hide file tree
Showing 26 changed files with 439 additions and 409 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -106,3 +106,5 @@ Generated_Code #added for RIA/Silverlight projects
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML

.vs
9 changes: 9 additions & 0 deletions src/.editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
root = true

[*]
end_of_line = crlf
insert_final_newline = true

[*.{cs,xaml}]
indent_style = space
indent_size = 4
6 changes: 0 additions & 6 deletions src/.nuget/NuGet.Config

This file was deleted.

Binary file removed src/.nuget/NuGet.exe
Binary file not shown.
151 changes: 0 additions & 151 deletions src/.nuget/NuGet.targets

This file was deleted.

35 changes: 35 additions & 0 deletions src/ChromeLogger.AspNet/ChromeLogger.AspNet.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net461</TargetFramework>
<RootNamespace>ChromeLogger</RootNamespace>
<Description>chrome extension for server side console logging with ASP.NET Classic (System.Web)</Description>
<Copyright>Copyright © Chris Missal 2013-2020</Copyright>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageProjectUrl>https://github.com/ChrisMissal/chromelogger</PackageProjectUrl>
<PackageIcon>icon128.png</PackageIcon>
<RepositoryUrl>https://github.com/ChrisMissal/chromelogger</RepositoryUrl>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<FileVersion>1.0.0.0</FileVersion>
<PackageTags>chrome console server-side asp.net</PackageTags>
</PropertyGroup>

<ItemGroup>
<Reference Include="System.Web" />
</ItemGroup>

<ItemGroup>
<None Include="..\icon128.png">
<Pack>True</Pack>
<PackagePath></PackagePath>
</None>
</ItemGroup>

<ItemGroup>
<PackageReference Include="System.Text.Json" Version="4.7.2" />
</ItemGroup>

<Import Project="..\ChromeLogger\ChromeLogger.projitems" Label="Shared" />

</Project>
45 changes: 45 additions & 0 deletions src/ChromeLogger.AspNet/Logger.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
using System.Collections.Specialized;
using System.Diagnostics.CodeAnalysis;
using System.Web;

namespace ChromeLogger
{
[SuppressMessage("ReSharper", "UnusedType.Global")]
[SuppressMessage("ReSharper", "UnusedMember.Global")]
public static class Logger
{
static IChromeLogger CurrentContextLogger
{
get
{
IChromeLogger logger;
var contextItems = HttpContext.Current.Items;
if (!contextItems.Contains(CoreChromeLogger.HeaderName))
{
logger = new CoreChromeLogger();
contextItems[CoreChromeLogger.HeaderName] = logger;
}
else
{
logger = (IChromeLogger)contextItems[CoreChromeLogger.HeaderName];
}

return logger;
}
}

public static void Log(object data) => CurrentContextLogger.Log(data);
public static void Warn(object data) => CurrentContextLogger.Warn(data);
public static void Error(object data) => CurrentContextLogger.Error(data);
public static void Info(object data) => CurrentContextLogger.Info(data);
public static void Group(object data) => CurrentContextLogger.Group(data);
public static void GroupEnd(object data) => CurrentContextLogger.GroupEnd(data);
public static void GroupCollapsed(object data) => CurrentContextLogger.GroupCollapsed(data);

public static NameValueCollection GetHeader()
{
var header = CurrentContextLogger.GetHttpHeader();
return new NameValueCollection { { header.Key, header.Value } };
}
}
}
16 changes: 16 additions & 0 deletions src/ChromeLogger.AspNetCore/ApplicationBuilderExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using Microsoft.AspNetCore.Builder;

namespace ChromeLogger
{
public static class ApplicationBuilderExtensions
{
/// <summary>
/// Attaches the chrome logger header setting middleware to the pipeline.
/// This method must be called at the start of the startup class Configure method.
/// </summary>
public static IApplicationBuilder UseChromeLogger(this IApplicationBuilder app)
{
return app.UseMiddleware<ChromeLoggerMiddleware>();
}
}
}
42 changes: 42 additions & 0 deletions src/ChromeLogger.AspNetCore/ChromeLogger.AspNetCore.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>netstandard2.0;netcoreapp3.1</TargetFrameworks>
<RootNamespace>ChromeLogger</RootNamespace>
<Description>chrome extension for server side console logging with ASP.NET Core</Description>
<Copyright>Copyright © Chris Missal 2013-2020</Copyright>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageProjectUrl>https://github.com/ChrisMissal/chromelogger</PackageProjectUrl>
<PackageIcon>icon128.png</PackageIcon>
<RepositoryUrl>https://github.com/ChrisMissal/chromelogger</RepositoryUrl>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<FileVersion>1.0.0.0</FileVersion>
<PackageTags>chrome console server-side asp.net-core</PackageTags>
</PropertyGroup>

<!-- ReSharper disable once UnknownProperty -->
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.6" />
</ItemGroup>

<!-- ReSharper disable once UnknownProperty -->
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

<ItemGroup>
<None Include="..\icon128.png">
<Pack>True</Pack>
<PackagePath></PackagePath>
</None>
</ItemGroup>

<ItemGroup>
<PackageReference Include="System.Text.Json" Version="4.7.2" />
</ItemGroup>

<Import Project="..\ChromeLogger\ChromeLogger.projitems" Label="Shared" />

</Project>
42 changes: 42 additions & 0 deletions src/ChromeLogger.AspNetCore/ChromeLogger.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
using System.Collections.Generic;
using Microsoft.AspNetCore.Http;

namespace ChromeLogger
{
public class ChromeLogger : IChromeLogger
{
readonly IHttpContextAccessor _contextAccessor;

IChromeLogger CurrentContextLogger
{
get
{
if (this._contextAccessor.HttpContext.Items.TryGetValue(
CoreChromeLogger.HeaderName,
out var loggerObj)
&& loggerObj is IChromeLogger logger)
{
return logger;
}

logger = new CoreChromeLogger();
this._contextAccessor.HttpContext.Items[CoreChromeLogger.HeaderName] = logger;
return logger;
}
}

public ChromeLogger(IHttpContextAccessor contextAccessor)
{
this._contextAccessor = contextAccessor;
}

public void Log(object data) => this.CurrentContextLogger.Log(data);
public void Warn(object data) => this.CurrentContextLogger.Warn(data);
public void Error(object data) => this.CurrentContextLogger.Error(data);
public void Info(object data) => this.CurrentContextLogger.Info(data);
public void Group(object data) => this.CurrentContextLogger.Group(data);
public void GroupEnd(object data) => this.CurrentContextLogger.GroupEnd(data);
public void GroupCollapsed(object data) => this.CurrentContextLogger.GroupCollapsed(data);
public KeyValuePair<string, string> GetHttpHeader() => this.CurrentContextLogger.GetHttpHeader();
}
}
35 changes: 35 additions & 0 deletions src/ChromeLogger.AspNetCore/ChromeLoggerMiddleware.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using System.Diagnostics.CodeAnalysis;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;

namespace ChromeLogger
{
[SuppressMessage("ReSharper", "UnusedMember.Global")]
[SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")]
public class ChromeLoggerMiddleware
{
readonly RequestDelegate _next;
readonly IChromeLogger _chromeLogger;

public ChromeLoggerMiddleware(RequestDelegate next, IChromeLogger chromeLogger)
{
this._next = next;
this._chromeLogger = chromeLogger;
}

public Task Invoke(HttpContext context)
{
context.Response.OnStarting(
h =>
{
var headers = (IHeaderDictionary)h;
var header = this._chromeLogger.GetHttpHeader();
headers[header.Key] = header.Value;
return Task.CompletedTask;
},
context.Response.Headers);

return this._next(context);
}
}
}
Loading

0 comments on commit 6e45d1c

Please sign in to comment.