using Amazon.Lambda.Core; using Microsoft.AspNetCore.Mvc; namespace CustomRuntimeAspNetCoreMinimalApiCustomSerializerTest.Controllers { [ApiController] [Route("[controller]")] public class LoggerTestController : ControllerBase { [HttpGet()] public long Get() { var lambdaContext = this.HttpContext.Items["LambdaContext"] as ILambdaContext; const int maxLogs = 10000; long actualLogsWritten = 0; Action stdOutTest = () => { long index = 0; while (index < maxLogs) { Console.WriteLine($"StdOut: {index++}"); Interlocked.Increment(ref actualLogsWritten); Thread.Yield(); } }; Action stdErrTest = () => { long index = 0; while (index < maxLogs) { Console.Error.WriteLine($"StdErr: {index++}"); Interlocked.Increment(ref actualLogsWritten); Thread.Yield(); } }; Action contextLoggerTest = () => { long index = 0; while (index < maxLogs) { lambdaContext!.Logger.LogWarning($"ContextLogger: {index++}"); Interlocked.Increment(ref actualLogsWritten); Thread.Yield(); } }; var tasks = new List(); for (int i = 0; i < 3; i++) { tasks.Add(Task.Run(stdOutTest)); tasks.Add(Task.Run(stdErrTest)); tasks.Add(Task.Run(contextLoggerTest)); } Task.WaitAll(tasks.ToArray()); return actualLogsWritten; } } }