我正在使用Serilog.Sinks.File并希望在我的应用程序启动时获得一个新的日志文件。
有没有办法做到这一点?
记录器总是附加到现有的日志文件。
小智 0
您可以使用这样的方法:
public static void CreateNextLogInSequence(string path, string prefix, DateTime timestamp, string suffix, string format, int? index = null)
{
var target = new FileInfo(string.Format("{0}/{1}{2}{3}{4}",
path,
prefix,
timestamp.ToString(format, CultureInfo.InvariantCulture),
index == null ? string.Empty : ("_" + index.Value.ToString("000", CultureInfo.InvariantCulture)),
suffix));
if (target.Exists || index == null)
CreateNextLogInSequence(path, prefix, timestamp, suffix, format, (index ?? 0) + 1);
else
target.Create().Close();
}
Run Code Online (Sandbox Code Playgroud)
..并像这样使用它:
.UseSerilog((context, services, config) =>
{
...
CreateNextLogInSequence("Logs", "log-", DateTime.Now, ".txt", "yyyyMMdd");
config.WriteTo.Logger(lc => lc
.WriteTo.File(path: $"Logs/log-.txt", rollOnFileSizeLimit: true, rollingInterval: RollingInterval.Day,
formatter: new ExpressionTemplate("{@t:yyyy-MM-dd HH:mm:ss} [{@l:u3}] [{SourceContext}] {if @m = '[null]' then '' else @m}\n{@x}")));
}
Run Code Online (Sandbox Code Playgroud)
这将在序列中创建一个全新的文件并模拟 Serilog 能够识别的翻转。它将开始使用新创建的文件。
| 归档时间: |
|
| 查看次数: |
470 次 |
| 最近记录: |