I am using rolling file sink.
Following is my code of initialization:
Serilog.Log.Logger = new LoggerConfiguration()
.WriteTo.RollingFile(@"L:\logs\Api-{Date}.txt", fileSizeLimitBytes: null)
.CreateLogger();
Here is the line to log:
Log.Information(message);
But after 2 KB, it creates a new file.
I don't know what's going wrong.
Update
This is my logger class:
public class Logger
{
public Logger()
{
Serilog.Log.Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.RollingFile(@"L:\logs\Api-{Date}.txt", fileSizeLimitBytes: null)
.CreateLogger();
}
public void Log(LogRequestParameters logRequestParameters, LoggingLevels loggingLevel)
{
var message = JsonConvert.SerializeObject(logRequestParameters);
switch (loggingLevel)
{
case LoggingLevels.Verbose:
Serilog.Log.Verbose(message);
break;
case LoggingLevels.Debug:
Serilog.Log.Debug(message);
break;
case LoggingLevels.Information:
Serilog.Log.Information(message);
break;
case LoggingLevels.Warning:
Serilog.Log.Warning(message);
break;
case LoggingLevels.Error:
Serilog.Log.Warning(message);
break;
case LoggingLevels.Fatal:
Serilog.Log.Fatal(message);
break;
}
}
}
This is my caller class:
public class Caller
{
logRequestParameters.DateTime = DateTime.Now.ToString();
logRequestParameters.Level = "Debug";
logRequestParameters.MachineName = Environment.MachineName;
logRequestParameters.Type = "Request";
logRequestParameters.Request = request;
Logger logger = new Logger();
logger.Log(logRequestParameters, LoggingLevels.Information);
}
The code is creating a new logger instance for each event. You need to create a single logger and use it for each logging call.
There is some further information on the lifecycle of Serilog loggers in the documentation.