J'essaie d'utiliser WriteTo.RollingFile avec Serilog comme suit:
var log = new LoggerConfiguration().WriteTo.RollingFile(
@"F:\logs\log-{Date}.txt",
LogEventLevel.Debug).CreateLogger();
log.Information("this is a log test");
Ma compréhension est que le fichier journal sera créé et nommé en fonction de la date, et qu'il écrira également dans un nouveau fichier tous les jours, mais je reçois un nouveau fichier journal pour chaque entrée de journal au cours de la même journée! Comment configurer Serilog pour écrire dans un nouveau fichier chaque jour, donc idéalement, j'ai un seul fichier journal par jour?
Et existe-t-il un processus d'archivage pour supprimer les fichiers de plus de 7 jours?
Essayez ci-dessous:
var log = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.RollingFile(@"f:\log\log.txt", retainedFileCountLimit:7)
.CreateLogger();
Le nom du fichier journal sera automatiquement log-20150819.txt etc. Vous n'avez pas besoin de spécifier la date.
Maintenant en 2018, la norme Serilog.Sinks.File
Le package NuGet prend en charge le roulement:
.WriteTo.File(@"e:\logs\skilliam.log", rollingInterval: RollingInterval.Day,
rollOnFileSizeLimit: true, fileSizeLimitBytes: 123456);
En guise de suivi, assurez-vous d'utiliser ensuite l'instance "Log" de portée globale.
Exemple:
Log.Information("Hello world");
Pour utiliser le même fichier, vous devez ajouter shared: true
.WriteTo.RollingFile ("log- {Date} .txt", partagé: vrai)
Voici une façon d'utiliser Serilog avec un web.config dans une application asp.net MVC 4/5.
Dans votre web.config, ajoutez ce qui suit:
<add key="serilog:minimum-level" value="Information" />
<add key="serilog:minimum-level:override:Microsoft" value="Information" />
<add key="serilog:minimum-level:override:System" value="Information" />
<add key="serilog:using:RollingFile" value="Serilog.Sinks.RollingFile" />
<add key="serilog:write-to:RollingFile.pathFormat" value="./Logs/log-{Date}.txt" />
<add key="serilog:write-to:RollingFile.outputTemplate" value="{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] [{SourceContext}] {Message}{NewLine}{Exception}" />
<add key="serilog:write-to:RollingFile.retainedFileCountLimit" value="10" />
Puis dans Application_Start
de global.asax ajoutez ce qui suit:
// Get application base directory
string basedir = AppDomain.CurrentDomain.BaseDirectory;
// Setup Serilog for logging
Log.Logger = new LoggerConfiguration()
.ReadFrom.AppSettings()
.WriteTo.RollingFile(basedir + "/Logs/log-{Date}.txt")
.CreateLogger();
Pour activer les fichiers journaux partagés multi-processus, définissez shared sur true:
dans du code
.WriteTo.RollingFile("log-{Date}.txt", shared: true)
ou dans web.config
<add key="serilog:write-to:RollingFile.shared" value="true" />