我有一个Enterprise Logging程序化配置,如下所示:
builder.ConfigureLogging()
.LogToCategoryNamed("General")
.WithOptions.SetAsDefaultCategory()
.SendTo.RollingFile("Rolling Flat File Trace Listener")
.CleanUpArchivedFilesWhenMoreThan(7)
.WhenRollFileExists(RollFileExistsBehavior.Increment)
.WithTraceOptions(TraceOptions.Timestamp)
.RollEvery(RollInterval.Day)
.UseTimeStampPattern("yyyy-mm-dd")
.ToFile(logPath)
.FormatWith(
new FormatterBuilder()
.TextFormatterNamed("Text Formatter")
.UsingTemplate("{timestamp}:{title}:{message}"))
.WithFooter("").WithHeader("");
我没有看到滚动行为,但我偶尔看到日志文件损坏。任何人都有任何建议/想法?
答案 0 :(得分:0)
一些想法:
对于时间戳模式“yyyy-mm-dd”,mm是分钟。你可能想用“yyyy-MM-dd”。
RollInterval.Day
表示文件只会在创建日志文件后24小时滚动。例如,如果第一个LogEntry是在星期六下午4点写入的,那么将创建一个新文件。如果下周日下午5点写入下一个条目,则该文件将滚动并创建一个新文件,但新文件将无法在星期一下午5点之前滚动(因为当前日志文件是在下午5点创建的)。如果您想在午夜之后写入第一个LogEntry时滚动,那么您可以使用RollInterval.Midnight
。
您的代码似乎对我有用。
您还可能需要创建一个错误特殊源来记录块中可能出现的任何错误:
var builder = new ConfigurationSourceBuilder();
builder.ConfigureLogging()
.LogToCategoryNamed("General")
.WithOptions.SetAsDefaultCategory()
.SendTo.RollingFile("Rolling Flat File Trace Listener")
.CleanUpArchivedFilesWhenMoreThan(7)
.WhenRollFileExists(RollFileExistsBehavior.Increment)
.WithTraceOptions(TraceOptions.Timestamp)
.RollEvery(RollInterval.Day)
.UseTimeStampPattern("yyyy-MM-dd")
.ToFile(logPath)
.FormatWith(
new FormatterBuilder()
.TextFormatterNamed("Text Formatter")
.UsingTemplate("{timestamp}:{title}:{message}"))
.WithFooter("").WithHeader("")
.SpecialSources
.LoggingErrorsAndWarningsCategory
.SendTo.FlatFile("Flat File Trace Listener")
.ToFile("errors.log");