I have a Net6 worker service project. Use Serilog.ILogger for log errors on txt file but recently the memory usage increase (8GB) The worker only get data from Database with Dapper, return data and send mail. This is the versions
<PackageReference Include="Serilog.Extensions.Hosting" Version="5.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
When catch exception of type SqlConnection and it´s regitry on log the memory usage increase, but when i have other type of exceptions this not happend.
_logger.LogError("InterfaceLogsCleanerWorker executed with exceptions" + ex.Message);
this is the code for get data
public async Task<List<SetupDTO>> Get()
{
var map = new Sys_SetupMap();
var result = new TransacResult(true, MessageTransactResult.OK);
List<Sys_Setup> entityList;
List<SetupDTO> list = new List<SetupDTO>();
using (var conn = new SqlConnection(this.connectionString))
{
var parameters = new DynamicParameters();
parameters.Add("Result", string.Empty, DbType.String, ParameterDirection.Output);
entityList = (await conn.QueryAsync<Sys_Setup>("GetSys_Setup", parameters, commandType: CommandType.StoredProcedure)).AsList();
}
foreach (var entity in entityList)
{
list.Add(map.EntityToDTO(entity));
}
return list;
}
This is due to how you are doing your log statement:
This needs to be:
Or, worst case:
The docs cover this (the concept is that each message should be a message template - i.e. any given application should only have tens to thousands of message templates; and these get parsed and cached)
The Serilog Analyzer can warn about usage mistakes like this: https://github.com/Suchiman/SerilogAnalyzer