Added autofac and nlog
This commit is contained in:
parent
7d6ada9ec0
commit
1c2cd83284
@ -32,7 +32,7 @@ using ASC.Common.DependencyInjection;
|
||||
using Autofac;
|
||||
using log4net.Config;
|
||||
using log4net.Core;
|
||||
using log4net.Util;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using NLog;
|
||||
|
||||
namespace ASC.Common.Logging
|
||||
@ -754,27 +754,28 @@ namespace ASC.Common.Logging
|
||||
|
||||
public class LogManager
|
||||
{
|
||||
internal static IContainer Builder { get; set; }
|
||||
internal IContainer Builder { get; set; }
|
||||
|
||||
internal static ConcurrentDictionary<string, ILog> Logs;
|
||||
|
||||
static LogManager()
|
||||
{
|
||||
var container = AutofacConfigLoader.Load("core");
|
||||
if (container != null)
|
||||
{
|
||||
Builder = container.Build();
|
||||
}
|
||||
|
||||
Logs = new ConcurrentDictionary<string, ILog>();
|
||||
}
|
||||
|
||||
public LogManager(IContainer builder)
|
||||
{
|
||||
Builder = builder;
|
||||
}
|
||||
|
||||
public static ILog GetLogger(string name)
|
||||
{
|
||||
{
|
||||
var logManager = CommonServiceProvider.GetService<LogManager>();
|
||||
|
||||
ILog result;
|
||||
if (!Logs.TryGetValue(name, out result))
|
||||
{
|
||||
result = Logs.AddOrUpdate(name, Builder != null ? Builder.Resolve<ILog>(new TypedParameter(typeof(string), name)) : new NullLog(), (k, v) => v);
|
||||
result = Logs.AddOrUpdate(name, logManager.Builder != null ? logManager.Builder.Resolve<ILog>(new TypedParameter(typeof(string), name)) : new NullLog(), (k, v) => v);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
@ -5,6 +5,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Autofac.Configuration" Version="4.1.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.0.0-preview4-19216-03" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0-preview3.19153.1" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0-preview3.19153.1">
|
||||
@ -13,11 +14,12 @@
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="3.0.0-preview3.19153.1" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.0.0-preview5-19264-04" />
|
||||
<PackageReference Include="NLog.Web.AspNetCore" Version="4.8.2" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\common\ASC.Common\ASC.Common.csproj" />
|
||||
<ProjectReference Include="..\..\common\ASC.Core.Common\ASC.Core.Common.csproj" />
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\common\ASC.Common\ASC.Common.csproj" />
|
||||
<ProjectReference Include="..\..\common\ASC.Core.Common\ASC.Core.Common.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
@ -1,6 +1,7 @@
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
namespace ASC.Web.Api
|
||||
{
|
||||
public class Program
|
||||
@ -15,6 +16,9 @@ namespace ASC.Web.Api
|
||||
.ConfigureWebHostDefaults(webBuilder =>
|
||||
{
|
||||
webBuilder.UseStartup<Startup>();
|
||||
});
|
||||
})
|
||||
.ConfigureAppConfiguration((hostingContext, config) => {
|
||||
config.AddJsonFile("autofac.json");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -8,20 +8,26 @@ using Microsoft.AspNetCore.Mvc.Formatters;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
|
||||
using ASC.Common.Logging;
|
||||
using ASC.Web.Api.Handlers;
|
||||
using ASC.Web.Api.Middleware;
|
||||
|
||||
using Autofac;
|
||||
using Autofac.Configuration;
|
||||
|
||||
|
||||
namespace ASC.Web.Api
|
||||
{
|
||||
public class Startup
|
||||
{
|
||||
public IConfiguration Configuration { get; }
|
||||
|
||||
public Startup(IConfiguration configuration)
|
||||
{
|
||||
Configuration = configuration;
|
||||
}
|
||||
|
||||
public IConfiguration Configuration { get; }
|
||||
|
||||
public void ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
services.AddControllers()
|
||||
@ -38,6 +44,15 @@ namespace ASC.Web.Api
|
||||
config.Filters.Add(new TypeFilterAttribute(typeof(FormatFilter)));
|
||||
config.Filters.Add(new AuthorizeFilter(policy));
|
||||
});
|
||||
|
||||
var module = new ConfigurationModule(Configuration);
|
||||
var builder = new ContainerBuilder();
|
||||
builder.RegisterModule(module);
|
||||
|
||||
var container = builder.Build();
|
||||
|
||||
services.AddSingleton(container);
|
||||
services.AddSingleton<LogManager>();
|
||||
}
|
||||
|
||||
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
|
||||
|
12
web/ASC.Web.Api/autofac.json
Normal file
12
web/ASC.Web.Api/autofac.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"components": [
|
||||
{
|
||||
"type": "ASC.Common.Logging.LogNLog, ASC.Common",
|
||||
"services": [
|
||||
{
|
||||
"type": "ASC.Common.Logging.ILog, ASC.Common"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
30
web/ASC.Web.Api/nlog.config
Normal file
30
web/ASC.Web.Api/nlog.config
Normal file
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<nlog>
|
||||
|
||||
<extensions>
|
||||
<add assembly="NLog.Web.AspNetCore"/>
|
||||
<add assembly="ASC.Common"/>
|
||||
</extensions>
|
||||
|
||||
<variable name="logDirectory" value="..\Logs\"/>
|
||||
<conversionPattern value=""/>
|
||||
|
||||
<targets async="true">
|
||||
<default-target-parameters type="SelfCleaning" archiveNumbering="DateAndSequence" archiveEvery="Day" enableArchiveFileCompression="true" archiveAboveSize="52428800" keepFileOpen="true" archiveDateFormat="MM-dd" layout="${date:format=yyyy-MM-dd HH\:mm\:ss,fff} ${level:uppercase=true} [${threadid}] ${logger} - ${message} ${exception:format=ToString}"/>
|
||||
<target name="web" type="SelfCleaning" fileName="${logDirectory}web.log" />
|
||||
<target name="sql" type="SelfCleaning" fileName="${logDirectory}web.sql.log" layout="${date:universalTime=true:format=yyyy-MM-dd HH\:mm\:ss,fff}|${threadid}|${event-properties:item=duration}|${message}|${event-properties:item=sql}|${event-properties:item=sqlParams}"/>
|
||||
<target name="files" type="SelfCleaning" fileName="${logDirectory}web.files.log"/>
|
||||
<target name="api" type="SelfCleaning" fileName="${logDirectory}web.api.log"/>
|
||||
<target name="notify" type="SelfCleaning" fileName="${logDirectory}web.notify.log" />
|
||||
<target name="ownFile-web" type="File" fileName="${logDirectory}web.asp.log" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
|
||||
</targets>
|
||||
|
||||
<rules>
|
||||
<logger name="ASC.SQL" minlevel="Debug" writeTo="sql" final ="true" />
|
||||
<logger name="ASC.Files" minlevel="Debug" writeTo="files" final ="true" />
|
||||
<logger name="ASC.Api" minlevel="Debug" writeTo="api" final ="true" />
|
||||
<logger name="ASC.Notify.Messages" minlevel="Debug" writeTo="notify" final ="true" />
|
||||
<logger name="ASC*" minlevel="Debug" writeTo="web" />
|
||||
<logger name="Microsoft.*" maxlevel="Info" writeTo="web" final="true" />
|
||||
</rules>
|
||||
</nlog>
|
Loading…
Reference in New Issue
Block a user