Skip to content

Commit 018d1e5

Browse files
committed
Merge branch 'dev' into reduce-statics
2 parents 7b66e47 + 573ed26 commit 018d1e5

7 files changed

Lines changed: 48 additions & 39 deletions

File tree

src/Hangfire.Core/AppBuilderExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ public static IAppBuilder UseHangfireServer(
341341

342342
private static void OnAppDisposing(object state)
343343
{
344-
var logger = LogProvider.GetLogger(typeof(AppBuilderExtensions));
344+
var logger = LogProvider.GetCurrentLogProvider().GetLogger(typeof(AppBuilderExtensions).FullName!); // TODO: Get safe logger instead
345345
logger.Info("Web application is shutting down via OWIN's host.OnAppDisposing callback.");
346346
((IDisposable) state).Dispose();
347347
var server = state as BackgroundJobServer;

src/Hangfire.Core/BackgroundJobClient.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ public BackgroundJobClient([NotNull] JobStorage storage, [NotNull] IJobFilterPro
9595
{
9696
}
9797

98-
public BackgroundJobClient([NotNull] JobStorage storage, [NotNull] IJobFilterProvider filterProvider, [NotNull] ILog logger)
99-
: this(storage, new BackgroundJobFactory(filterProvider), new BackgroundJobStateChanger(filterProvider), logger)
98+
public BackgroundJobClient([NotNull] JobStorage storage, [NotNull] IJobFilterProvider filterProvider, [CanBeNull] ILogProvider? logProvider)
99+
: this(storage, new BackgroundJobFactory(filterProvider), new BackgroundJobStateChanger(filterProvider), logProvider)
100100
{
101101
}
102102

@@ -116,7 +116,7 @@ public BackgroundJobClient(
116116
[NotNull] JobStorage storage,
117117
[NotNull] IBackgroundJobFactory factory,
118118
[NotNull] IBackgroundJobStateChanger stateChanger)
119-
: this(storage, factory, stateChanger, LogProvider.For<BackgroundJobClient>())
119+
: this(storage, factory, stateChanger, null)
120120
{
121121
}
122122

@@ -125,12 +125,15 @@ public BackgroundJobClient(
125125
[NotNull] JobStorage storage,
126126
[NotNull] IBackgroundJobFactory factory,
127127
[NotNull] IBackgroundJobStateChanger stateChanger,
128-
[NotNull] ILog logger)
128+
[CanBeNull] ILogProvider? logProvider)
129129
{
130130
_storage = storage ?? throw new ArgumentNullException(nameof(storage));
131131
_stateChanger = stateChanger ?? throw new ArgumentNullException(nameof(stateChanger));
132132
_factory = factory ?? throw new ArgumentNullException(nameof(factory));
133-
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
133+
134+
logProvider ??= LogProvider.GetCurrentLogProvider();
135+
136+
_logger = logProvider.GetLogger(GetType().FullName!); // TODO: Obtain safe logger here
134137
_profiler = new SlowLogProfiler(_logger);
135138
}
136139

src/Hangfire.Core/RecurringJobManager.cs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ public RecurringJobManager(
6666
[NotNull] JobStorage storage,
6767
[NotNull] IJobFilterProvider filterProvider,
6868
[NotNull] ITimeZoneResolver timeZoneResolver,
69-
[NotNull] ILog logger)
70-
: this(storage, new BackgroundJobFactory(filterProvider), timeZoneResolver, static () => DateTime.UtcNow, logger)
69+
[NotNull] ILogProvider logProvider)
70+
: this(storage, new BackgroundJobFactory(filterProvider), timeZoneResolver, static () => DateTime.UtcNow, logProvider)
7171
{
7272
}
7373

@@ -76,7 +76,7 @@ public RecurringJobManager(
7676
[NotNull] IJobFilterProvider filterProvider,
7777
[NotNull] ITimeZoneResolver timeZoneResolver,
7878
[NotNull] Func<DateTime> nowFactory)
79-
: this(storage, new BackgroundJobFactory(filterProvider), timeZoneResolver, nowFactory, LogProvider.For<RecurringJobManager>())
79+
: this(storage, new BackgroundJobFactory(filterProvider), timeZoneResolver, nowFactory, null)
8080
{
8181
}
8282

@@ -86,7 +86,7 @@ public RecurringJobManager([NotNull] JobStorage storage, [NotNull] IBackgroundJo
8686
}
8787

8888
public RecurringJobManager([NotNull] JobStorage storage, [NotNull] IBackgroundJobFactory factory, [NotNull] ITimeZoneResolver timeZoneResolver)
89-
: this(storage, factory, timeZoneResolver, static () => DateTime.UtcNow, LogProvider.For<RecurringJobManager>())
89+
: this(storage, factory, timeZoneResolver, static () => DateTime.UtcNow, null)
9090
{
9191
}
9292

@@ -95,8 +95,8 @@ public RecurringJobManager(
9595
[NotNull] JobStorage storage,
9696
[NotNull] IBackgroundJobFactory factory,
9797
[NotNull] ITimeZoneResolver timeZoneResolver,
98-
[NotNull] ILog logger)
99-
: this(storage, factory, timeZoneResolver, static () => DateTime.UtcNow, logger)
98+
[CanBeNull] ILogProvider? logProvider)
99+
: this(storage, factory, timeZoneResolver, static () => DateTime.UtcNow, logProvider)
100100
{
101101
}
102102

@@ -105,13 +105,16 @@ internal RecurringJobManager(
105105
[NotNull] IBackgroundJobFactory factory,
106106
[NotNull] ITimeZoneResolver timeZoneResolver,
107107
[NotNull] Func<DateTime> nowFactory,
108-
[NotNull] ILog logger)
108+
[CanBeNull] ILogProvider? logProvider)
109109
{
110110
_storage = storage ?? throw new ArgumentNullException(nameof(storage));
111111
_factory = factory ?? throw new ArgumentNullException(nameof(factory));
112112
_timeZoneResolver = timeZoneResolver ?? throw new ArgumentNullException(nameof(timeZoneResolver));
113113
_nowFactory = nowFactory ?? throw new ArgumentNullException(nameof(nowFactory));
114-
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
114+
115+
logProvider ??= LogProvider.GetCurrentLogProvider();
116+
117+
_logger = logProvider.GetLogger(GetType().FullName!); // TODO: Obtain safe logger here
115118
_profiler = new SlowLogProfiler(_logger);
116119
}
117120

src/Hangfire.Core/Server/AspNetShutdownDetector.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,14 @@ private static Func<object, T> CreateGetFieldDelegate<T>(FieldInfo fieldInfo, Ty
310310

311311
private static ILog GetLogger()
312312
{
313-
return LogProvider.GetLogger(typeof(AspNetShutdownDetector));
313+
try
314+
{
315+
return LogProvider.GetCurrentLogProvider().GetLogger(typeof(AspNetShutdownDetector).FullName!); // TODO: Get safe logger instead
316+
}
317+
catch (Exception)
318+
{
319+
return LogProvider.NoOpLogger.Instance;
320+
}
314321
}
315322
}
316323
}

src/Hangfire.NetCore/DefaultClientManagerFactory.cs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,16 @@ public DefaultClientManagerFactory([NotNull] IServiceProvider serviceProvider)
3333
public IBackgroundJobClientV2 GetClientV2(JobStorage storage)
3434
{
3535
var logProvider = _serviceProvider.GetRequiredService<ILogProvider>();
36-
var logger = logProvider.GetLogger(typeof(BackgroundJobClient).FullName!); // TODO: Ensure logger is wrapped
3736

3837
if (HangfireServiceCollectionExtensions.GetInternalServices(_serviceProvider, out var factory, out var stateChanger, out _))
3938
{
40-
return new BackgroundJobClient(storage, factory, stateChanger, logger);
39+
return new BackgroundJobClient(storage, factory, stateChanger, logProvider);
4140
}
4241

4342
return new BackgroundJobClient(
4443
storage,
4544
_serviceProvider.GetRequiredService<IJobFilterProvider>(),
46-
logger);
45+
logProvider);
4746
}
4847

4948
public IBackgroundJobClient GetClient(JobStorage storage)
@@ -54,22 +53,21 @@ public IBackgroundJobClient GetClient(JobStorage storage)
5453
public IRecurringJobManagerV2 GetManagerV2(JobStorage storage)
5554
{
5655
var logProvider = _serviceProvider.GetRequiredService<ILogProvider>();
57-
var logger = logProvider.GetLogger(typeof(BackgroundJobClient).FullName!); // TODO: Ensure logger is wrapped
5856

5957
if (HangfireServiceCollectionExtensions.GetInternalServices(_serviceProvider, out var factory, out _, out _))
6058
{
6159
return new RecurringJobManager(
6260
storage,
6361
factory,
6462
_serviceProvider.GetRequiredService<ITimeZoneResolver>(),
65-
logger);
63+
logProvider);
6664
}
6765

6866
return new RecurringJobManager(
6967
storage,
7068
_serviceProvider.GetRequiredService<IJobFilterProvider>(),
7169
_serviceProvider.GetRequiredService<ITimeZoneResolver>(),
72-
logger);
70+
logProvider);
7371
}
7472

7573
public IRecurringJobManager GetManager(JobStorage storage)

tests/Hangfire.Core.Tests/BackgroundJobClientFacts.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public class BackgroundJobClientFacts
2121
private readonly Mock<IState> _state;
2222
private readonly Job _job;
2323
private readonly Mock<IBackgroundJobStateChanger> _stateChanger;
24-
private readonly Mock<ILog> _logger;
24+
private readonly Mock<ILogProvider> _logProvider;
2525

2626
public BackgroundJobClientFacts()
2727
{
@@ -39,7 +39,8 @@ public BackgroundJobClientFacts()
3939
_factory.Setup(x => x.Create(It.IsAny<CreateContext>()))
4040
.Returns(new BackgroundJob("some-job", _job, DateTime.UtcNow));
4141

42-
_logger = new Mock<ILog>();
42+
_logProvider = new Mock<ILogProvider>();
43+
_logProvider.Setup(x => x.GetLogger(It.IsAny<string>())).Returns(new Mock<ILog>().Object);
4344
}
4445

4546
[Fact]
@@ -70,12 +71,10 @@ public void Ctor_ThrowsAnException_WhenStateChangerIsNull()
7071
}
7172

7273
[Fact]
73-
public void Ctor_ThrowsAnException_WhenLoggerIsNull()
74+
public void Ctor_DoesNotThrow_WhenLoggerIsNull()
7475
{
75-
var exception = Assert.Throws<ArgumentNullException>(
76-
() => new BackgroundJobClient(_storage.Object, _factory.Object, _stateChanger.Object, null));
77-
78-
Assert.Equal("logger", exception.ParamName);
76+
var client = new BackgroundJobClient(_storage.Object, _factory.Object, _stateChanger.Object, null);
77+
Assert.NotNull(client);
7978
}
8079

8180
[Fact, GlobalLock(Reason = "Needs JobStorage.Current instance")]
@@ -212,7 +211,7 @@ public static void Method()
212211

213212
private BackgroundJobClient CreateClient()
214213
{
215-
return new BackgroundJobClient(_storage.Object, _factory.Object, _stateChanger.Object, _logger.Object);
214+
return new BackgroundJobClient(_storage.Object, _factory.Object, _stateChanger.Object, _logProvider.Object);
216215
}
217216
}
218217
}

tests/Hangfire.Core.Tests/RecurringJobManagerFacts.cs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class RecurringJobManagerFacts
2828
private readonly Func<DateTime> _nowFactory;
2929
private readonly BackgroundJob _backgroundJob;
3030
private readonly Mock<ITimeZoneResolver> _timeZoneResolver;
31-
private readonly Mock<ILog> _logger;
31+
private readonly Mock<ILogProvider> _logProvider;
3232

3333
public RecurringJobManagerFacts()
3434
{
@@ -39,7 +39,8 @@ public RecurringJobManagerFacts()
3939
_storage = new Mock<JobStorage>();
4040
_factory = new Mock<IBackgroundJobFactory>();
4141
_stateMachine = new Mock<IStateMachine>();
42-
_logger = new Mock<ILog>();
42+
_logProvider = new Mock<ILogProvider>();
43+
_logProvider.Setup(x => x.GetLogger(It.IsAny<string>())).Returns(new Mock<ILog>().Object);
4344
_factory.SetupGet(x => x.StateMachine).Returns(_stateMachine.Object);
4445
_nowFactory = () => _now;
4546

@@ -82,7 +83,7 @@ public void Ctor_ThrowsAnException_WhenFactoryIsNull()
8283
public void Ctor_ThrowsAnException_WhenTimeZoneResolverIsNull()
8384
{
8485
var exception = Assert.Throws<ArgumentNullException>(
85-
() => new RecurringJobManager(_storage.Object, _factory.Object, null, _nowFactory, _logger.Object));
86+
() => new RecurringJobManager(_storage.Object, _factory.Object, null, _nowFactory, _logProvider.Object));
8687

8788
Assert.Equal("timeZoneResolver", exception.ParamName);
8889
}
@@ -91,18 +92,16 @@ public void Ctor_ThrowsAnException_WhenTimeZoneResolverIsNull()
9192
public void Ctor_ThrowsAnException_WhenNowFactoryIsNull()
9293
{
9394
var exception = Assert.Throws<ArgumentNullException>(
94-
() => new RecurringJobManager(_storage.Object, _factory.Object, _timeZoneResolver.Object, null, _logger.Object));
95+
() => new RecurringJobManager(_storage.Object, _factory.Object, _timeZoneResolver.Object, null, _logProvider.Object));
9596

9697
Assert.Equal("nowFactory", exception.ParamName);
9798
}
9899

99100
[Fact]
100-
public void Ctor_ThrowsAnException_WhenLoggerIsNull()
101+
public void Ctor_DoesNotThrow_WhenLoggerIsNull()
101102
{
102-
var exception = Assert.Throws<ArgumentNullException>(
103-
() => new RecurringJobManager(_storage.Object, _factory.Object, _timeZoneResolver.Object, _nowFactory, null));
104-
105-
Assert.Equal("logger", exception.ParamName);
103+
var manager = new RecurringJobManager(_storage.Object, _factory.Object, _timeZoneResolver.Object, _nowFactory, null);
104+
Assert.NotNull(manager);
106105
}
107106

108107
[Fact]
@@ -1034,7 +1033,7 @@ public void HandlesChangingProcessOfInvocationDataSerialization()
10341033

10351034
private RecurringJobManager CreateManager()
10361035
{
1037-
return new RecurringJobManager(_storage.Object, _factory.Object, _timeZoneResolver.Object, _nowFactory, _logger.Object);
1036+
return new RecurringJobManager(_storage.Object, _factory.Object, _timeZoneResolver.Object, _nowFactory, _logProvider.Object);
10381037
}
10391038

10401039
[SuppressMessage("Usage", "xUnit1013:Public method should be marked as test")]

0 commit comments

Comments
 (0)