Skip to content

Commit aea3a45

Browse files
committed
added support for meta data logging
1 parent 68fb26f commit aea3a45

File tree

6 files changed

+45
-10
lines changed

6 files changed

+45
-10
lines changed

dotNet/CoreHelpers.Extensions.Logging.Tasks/TaskLogger.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,19 @@ public TaskLogger(ITaskLoggerFactory taskLoggerFactory)
3636
// check if we need to announce the task
3737
if (!castedState.IsTaskAnnounced)
3838
{
39-
castedState.TaskId = _taskLoggerFactory.AnnounceTask(castedState.TaskType, castedState.TaskSource, castedState.TaskWorker).GetAwaiter().GetResult();
39+
if (String.IsNullOrEmpty(castedState.MetaData))
40+
{
41+
castedState.TaskId = _taskLoggerFactory
42+
.AnnounceTask(castedState.TaskType, castedState.TaskSource, castedState.TaskWorker).GetAwaiter()
43+
.GetResult();
44+
}
45+
else
46+
{
47+
castedState.TaskId = _taskLoggerFactory
48+
.AnnounceTask(castedState.TaskType, castedState.TaskSource, castedState.TaskWorker, castedState.MetaData).GetAwaiter()
49+
.GetResult();
50+
}
51+
4052
castedState.IsTaskAnnounced = true;
4153
}
4254

dotNet/CoreHelpers.Extensions.Logging.Tasks/TaskLoggerExtension.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,14 @@ public static ILoggingBuilder AddTaskLogger(this ILoggingBuilder builder)
1717
public static ITaskLoggerTypedScope? BeginTaskScope(this ILogger logger, string taskId)
1818
=> BeginTypedTaskScope(logger, new TaskLoggerState() { TaskId = taskId, IsTaskAnnounced = true });
1919

20+
public static ITaskLoggerTypedScope? BeginTaskScope(this ILogger logger, string taskId, string metaDataString)
21+
=> BeginTypedTaskScope(logger, new TaskLoggerState() { TaskId = taskId, IsTaskAnnounced = true, MetaData = metaDataString });
22+
2023
public static ITaskLoggerTypedScope? BeginNewTaskScope(this ILogger logger, string taskType, string taskSource, string taskWorker)
2124
=> BeginTypedTaskScope(logger, new TaskLoggerState() { TaskId = string.Empty, TaskType = taskType, TaskSource = taskSource, TaskWorker = taskWorker, IsTaskAnnounced = false });
25+
26+
public static ITaskLoggerTypedScope? BeginNewTaskScope(this ILogger logger, string taskType, string taskSource, string taskWorker, string metaDataString)
27+
=> BeginTypedTaskScope(logger, new TaskLoggerState() { TaskId = string.Empty, TaskType = taskType, TaskSource = taskSource, TaskWorker = taskWorker, IsTaskAnnounced = false, MetaData = metaDataString });
2228

2329
private static ITaskLoggerTypedScope? BeginTypedTaskScope(ILogger logger, TaskLoggerState taskLoggerState)
2430
{

dotNet/CoreHelpers.Extensions.Logging.Tasks/TaskLoggerState.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ internal class TaskLoggerState
88
public string TaskType {get; set;} = string.Empty;
99
public string TaskSource { get; set; } = string.Empty;
1010
public string TaskWorker { get; set; } = string.Empty;
11+
12+
public string MetaData { get; set; } = string.Empty;
1113
public bool IsTaskAnnounced { get; set; } = false;
1214
}
1315
}

dotNet/CoreHelpers.TaskLogging.Abstractions/ITaskLoggerFactory.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,19 @@ public interface ITaskLoggerFactory
4242
/// <param name="taskWorker"></param>
4343
/// <param name="metaData"></param>
4444
/// <returns></returns>
45-
Task<string> AnnounceTask(string taskType, string taskSource, string taskWorker, IDictionary<string, string> metaData);
45+
Task<string> AnnounceTask(string taskType, string taskSource, string taskWorker, string metaData);
46+
47+
/// <summary>
48+
/// Announces a new task in the state pending to the logging framework including required
49+
/// meta data usable in the frontend. Only announced tasks can be used in a task logger by
50+
/// calling CreateTaskLogger
51+
/// </summary>
52+
/// <param name="taskType"></param>
53+
/// <param name="taskSource"></param>
54+
/// <param name="taskWorker"></param>
55+
/// <param name="metaDataTyped"></param>
56+
/// <returns></returns>
57+
Task<string> AnnounceTask(string taskType, string taskSource, string taskWorker, IDictionary<string, string> metaDataTyped);
4658

4759
/// <summary>
4860
/// Update the task status of a given task

dotNet/CoreHelpers.TaskLogging.Sample/Worker.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ namespace CoreHelpers.TaskLogging.Sample
66
{
77
internal class Worker
88
{
9-
private ILogger<Worker> _logger;
10-
private IEnumerable<IProcessor> _processors;
11-
private ITaskLoggerFactory _taskLoggerFactory;
9+
private readonly ILogger<Worker> _logger;
10+
private readonly IEnumerable<IProcessor> _processors;
11+
private readonly ITaskLoggerFactory _taskLoggerFactory;
1212

1313
public Worker(ILogger<Worker> logger, IEnumerable<IProcessor> processors, ITaskLoggerFactory taskLoggerFactory)
1414
{
@@ -19,14 +19,14 @@ public Worker(ILogger<Worker> logger, IEnumerable<IProcessor> processors, ITaskL
1919

2020
public async Task Process()
2121
{
22-
// execute the successprocessor
22+
// execute the success processor
2323
using (_logger.BeginNewTaskScope("successjob", "q", "w"))
2424
{
2525
await _processors.Where(p => p is ProcessorSuccess).First().Execute();
2626
}
2727

2828
// execute the failedprocessor
29-
using (var scope = _logger.BeginNewTaskScope("failedjob", "q", "w"))
29+
using (var scope = _logger.BeginNewTaskScope("failedjob", "q", "w", "app=CoreHelpers.TaskLogging.Sample,class=Main"))
3030
{
3131
Console.WriteLine(scope.TaskId);
3232
await _processors.Where(p => p is ProcessorFailed).First().Execute();

dotNet/CoreHelpers.TaskLogging/AzureStorageTableTaskLoggerFactory.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ public AzureStorageTableTaskLoggerFactory(string connectionString, string enviro
2424
}
2525

2626
public async Task<string> AnnounceTask(string taskType, string taskSource, string taskWorker)
27-
=> await AnnounceTask(taskType, taskSource, taskWorker, new Dictionary<string, string>());
27+
=> await AnnounceTask(taskType, taskSource, taskWorker, string.Empty);
2828

29-
public async Task<string> AnnounceTask(string taskType, string taskSource, string taskWorker, IDictionary<string, string>? metaData)
29+
public async Task<string> AnnounceTask(string taskType, string taskSource, string taskWorker, string metaData)
3030
{
3131
// define the refDate
3232
var refDate = DateTime.UtcNow;
@@ -44,7 +44,7 @@ public async Task<string> AnnounceTask(string taskType, string taskSource, strin
4444
TaskType = taskType,
4545
TaskSource = taskSource,
4646
TaskWorker = taskWorker,
47-
TaskData = metaData != null ? JsonConvert.SerializeObject(metaData) : String.Empty
47+
TaskData = String.IsNullOrEmpty(metaData) ? string.Empty : metaData
4848
};
4949

5050
// get the table name
@@ -57,6 +57,9 @@ public async Task<string> AnnounceTask(string taskType, string taskSource, strin
5757
return taskKey;
5858
}
5959

60+
public Task<string> AnnounceTask(string taskType, string taskSource, string taskWorker, IDictionary<string, string> metaDataTyped)
61+
=> AnnounceTask(taskType, taskSource, taskWorker, JsonConvert.SerializeObject(metaDataTyped));
62+
6063
public async Task UpdateTaskStatus(string taskKey, TaskStatus taskStatus)
6164
{
6265
// build the task entity

0 commit comments

Comments
 (0)