added Logger injection module for Autofac, API boots up.

pull/23/head
kay.one 12 years ago
parent 64a3e1caf0
commit 87f3c6a6c9

@ -18,7 +18,10 @@ namespace NzbDrone.Api
{ {
private readonly Logger _logger; private readonly Logger _logger;
public Bootstrapper()
{
_logger = LogManager.GetCurrentClassLogger();
}
public static void Initialize() public static void Initialize()
{ {

@ -16,11 +16,14 @@ namespace NzbDrone.Api.ErrorManagment
public Response HandleException(NancyContext context, Exception exception) public Response HandleException(NancyContext context, Exception exception)
{ {
if (exception is ApiException) var apiException = exception as ApiException;
if (apiException != null)
{ {
_logger.WarnException("API Error", exception); _logger.WarnException("API Error", apiException);
return ((ApiException)exception).ToErrorResponse(); return apiException.ToErrorResponse();
} }
_logger.ErrorException("Unexpected error", exception); _logger.ErrorException("Unexpected error", exception);
return null; return null;
} }

@ -92,6 +92,7 @@
<Compile Include="ErrorManagment\ErrorPipeline.cs" /> <Compile Include="ErrorManagment\ErrorPipeline.cs" />
<Compile Include="Exceptions\InvalidApiKeyException.cs" /> <Compile Include="Exceptions\InvalidApiKeyException.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="QualityProfiles\NzbDroneApiModule.cs" />
<Compile Include="QualityProfiles\QualityProfileModel.cs" /> <Compile Include="QualityProfiles\QualityProfileModel.cs" />
<Compile Include="QualityProfiles\QualityProfileModule.cs" /> <Compile Include="QualityProfiles\QualityProfileModule.cs" />
<Compile Include="QualityType\QualityTypeModel.cs" /> <Compile Include="QualityType\QualityTypeModel.cs" />

@ -0,0 +1,16 @@
using System.Linq;
using Nancy;
namespace NzbDrone.Api.QualityProfiles
{
public abstract class NzbDroneApiModule : NancyModule
{
protected NzbDroneApiModule(string resource)
: base("/api/" + resource.Trim('/'))
{
}
}
}

@ -8,18 +8,14 @@ using NzbDrone.Api.QualityType;
namespace NzbDrone.Api.QualityProfiles namespace NzbDrone.Api.QualityProfiles
{ {
public class QualityProfileModule : NancyModule public class QualityProfileModule : NzbDroneApiModule
{ {
private readonly QualityProvider _qualityProvider; private readonly QualityProvider _qualityProvider;
public QualityProfileModule(QualityProvider qualityProvider) public QualityProfileModule(QualityProvider qualityProvider)
{
_qualityProvider = qualityProvider;
}
public QualityProfileModule()
: base("/QualityProfile") : base("/QualityProfile")
{ {
_qualityProvider = qualityProvider;
Get["/"] = x => OnGet(); Get["/"] = x => OnGet();
Get["/{Id}"] = x => OnGet((int)x.Id); Get["/{Id}"] = x => OnGet((int)x.Id);
Put["/"] = x => OnPut(); Put["/"] = x => OnPut();

@ -2,22 +2,19 @@
using System.Linq; using System.Linq;
using AutoMapper; using AutoMapper;
using Nancy; using Nancy;
using NzbDrone.Api.QualityProfiles;
using NzbDrone.Core.Providers; using NzbDrone.Core.Providers;
namespace NzbDrone.Api.QualityType namespace NzbDrone.Api.QualityType
{ {
public class QualityTypeModule : NancyModule public class QualityTypeModule : NzbDroneApiModule
{ {
private readonly QualityTypeProvider _qualityTypeProvider; private readonly QualityTypeProvider _qualityTypeProvider;
public QualityTypeModule(QualityTypeProvider qualityTypeProvider) public QualityTypeModule(QualityTypeProvider qualityTypeProvider)
{
_qualityTypeProvider = qualityTypeProvider;
}
public QualityTypeModule()
: base("/QualityTypes") : base("/QualityTypes")
{ {
_qualityTypeProvider = qualityTypeProvider;
Get["/"] = x => GetQualityType(); Get["/"] = x => GetQualityType();
Get["/{id}"] = x => GetQualityType(x.Id); Get["/{id}"] = x => GetQualityType(x.Id);

@ -20,15 +20,17 @@ namespace NzbDrone.Core
private static readonly Logger logger = LogManager.GetLogger("ServiceRegistration"); private static readonly Logger logger = LogManager.GetLogger("ServiceRegistration");
public static void RegisterCoreServices(this ContainerBuilder container) public static void RegisterCoreServices(this ContainerBuilder containerBuilder)
{ {
var core = Assembly.Load("NzbDrone.Core"); var core = Assembly.Load("NzbDrone.Core");
var common = Assembly.Load("NzbDrone.Common"); var common = Assembly.Load("NzbDrone.Common");
container.RegisterAssembly(core); containerBuilder.RegisterAssembly(core);
container.RegisterAssembly(common); containerBuilder.RegisterAssembly(common);
container.InitDatabase(); containerBuilder.InitDatabase();
containerBuilder.RegisterModule<LogInjectionModule>();
} }

@ -0,0 +1,36 @@
using System;
using System.Linq;
using Autofac;
using Autofac.Core;
using NLog;
namespace NzbDrone.Core.Instrumentation
{
public class LogInjectionModule : Module
{
protected override void AttachToComponentRegistration(IComponentRegistry registry, IComponentRegistration registration)
{
registration.Preparing += OnComponentPreparing;
}
static void OnComponentPreparing(object sender, PreparingEventArgs e)
{
e.Parameters = e.Parameters.Union(new[]
{
new ResolvedParameter((p, i) => p.ParameterType == typeof(Logger), (p,i)=> GetLogger(p.Member.DeclaringType))
});
}
private static object GetLogger(Type type)
{
const string STRING_TO_REMOVE = "SyntikX";
var loggerName = type.FullName;
if (loggerName.StartsWith(STRING_TO_REMOVE))
{
loggerName = loggerName.Substring(STRING_TO_REMOVE.Length + 1);
}
return LogManager.GetLogger(loggerName);
}
}
}

@ -265,6 +265,7 @@
<Compile Include="Helpers\SortHelper.cs" /> <Compile Include="Helpers\SortHelper.cs" />
<Compile Include="Helpers\SabnzbdPriorityTypeConverter.cs" /> <Compile Include="Helpers\SabnzbdPriorityTypeConverter.cs" />
<Compile Include="Helpers\XElementHelper.cs" /> <Compile Include="Helpers\XElementHelper.cs" />
<Compile Include="Instrumentation\LogInjectionModule.cs" />
<Compile Include="Jobs\CleanupRecycleBinJob.cs" /> <Compile Include="Jobs\CleanupRecycleBinJob.cs" />
<Compile Include="Jobs\AppShutdownJob.cs" /> <Compile Include="Jobs\AppShutdownJob.cs" />
<Compile Include="Jobs\AppRestartJob.cs" /> <Compile Include="Jobs\AppRestartJob.cs" />

@ -1,6 +1,6 @@
<SolutionConfiguration> <SolutionConfiguration>
<FileVersion>1</FileVersion> <FileVersion>1</FileVersion>
<AutoEnableOnStartup>True</AutoEnableOnStartup> <AutoEnableOnStartup>False</AutoEnableOnStartup>
<AllowParallelTestExecution>true</AllowParallelTestExecution> <AllowParallelTestExecution>true</AllowParallelTestExecution>
<AllowTestsToRunInParallelWithThemselves>true</AllowTestsToRunInParallelWithThemselves> <AllowTestsToRunInParallelWithThemselves>true</AllowTestsToRunInParallelWithThemselves>
<FrameworkUtilisationTypeForNUnit>UseDynamicAnalysis</FrameworkUtilisationTypeForNUnit> <FrameworkUtilisationTypeForNUnit>UseDynamicAnalysis</FrameworkUtilisationTypeForNUnit>

Loading…
Cancel
Save