c# - 如何使用 NLog 保存在两个不同的文件中?
问题描述
我在 MVC 中有一个 Web 应用程序,它使用 NLog 和 Quartz 来运行一些作业。
我需要将作业的日志保存在不同的文件中,但我找不到这样做的方法,因为我只有一个 LogManager 到应用程序。
尝试使用其他目标,但没有成功。
有谁知道该怎么做?
下面是我今天使用的:
var config = new NLog.Config.LoggingConfiguration();
var logfile = new NLog.Targets.FileTarget("logfile") { FileName = ArquivoLog, Name="logfile", CreateDirs = true, Layout = FormatoLog, ArchiveEvery = NLog.Targets.FileArchivePeriod.Day, ArchiveNumbering = NLog.Targets.ArchiveNumberingMode.DateAndSequence, MaxArchiveFiles = 31, WriteFooterOnArchivingOnly = true, KeepFileOpen = true, OpenFileCacheTimeout = 30 };
config.AddRule(LogLevel.Trace, LogLevel.Fatal, logfile);
NLog.LogManager.Configuration = config;
解决方案
要通过 NLog.config 文件执行此操作,请参阅 Andrew Tarasenko 的答案。如果您想在代码中执行此操作,您是否尝试过以下操作?
var config = new NLog.Config.LoggingConfiguration();
var logfile = new NLog.Targets.FileTarget("logfile1") { FileName = ArquivoLog, Name="logfile1", CreateDirs = true, Layout = FormatoLog, ArchiveEvery = NLog.Targets.FileArchivePeriod.Day, ArchiveNumbering = NLog.Targets.ArchiveNumberingMode.DateAndSequence, MaxArchiveFiles = 31, WriteFooterOnArchivingOnly = true, KeepFileOpen = true, OpenFileCacheTimeout = 30 };
var logfile2 = new NLog.Targets.FileTarget("logfile2") { FileName = ArquivoLog, /* Name="NotReallyNeeded as it is already passed in constructor" */, CreateDirs = true, Layout = FormatoLog, ArchiveEvery = NLog.Targets.FileArchivePeriod.Day, ArchiveNumbering = NLog.Targets.ArchiveNumberingMode.DateAndSequence, MaxArchiveFiles = 31, WriteFooterOnArchivingOnly = true, KeepFileOpen = true, OpenFileCacheTimeout = 30 };
config.AddRule(LogLevel.Trace, LogLevel.Fatal, logfile1, "Job1");
config.AddRule(LogLevel.Trace, LogLevel.Fatal, logfile2, "Job2");
NLog.LogManager.Configuration = config;
然后在你的工作中你应该创建一个这样的记录器
var loggerInJob1 = NLog.LogManager.GetLogger("Job1");
var loggerInJob2 = NLog.LogManager.GetLogger("Job2");
有关我添加的 loggerNamePattern 属性,请参阅NLog 文档。
这样,每个作业的日志都会保存到不同的日志文件中。
我个人会选择 NLog.config 方式。这样,无需重新编译代码就可以更轻松地添加新目标(用于新作业)。
但不知道您的解决方案是否可行。
推荐阅读
- visual-studio - Docker AspNet Core + Couchbase
- docker - 无法从 docker 映像连接到 dockerhost
- javascript - 循环遍历 Microdata 以提取 itemprop 和 text 值
- reactjs - 重新打开屏幕时 Redux 显示旧状态
- matplotlib - 如何将中位数、四分位数信息与箱线图对齐
- android - android将当前日期时间转换为我想要的日期数据类型格式,而不是字符串
- python - 这是一个真正的错误,还是我只是误解了正在发生的事情?
- sql - 没有子查询的主/子项目行号选择
- php - Laravel / PHP:如何解决 ICS 文件中的 1h 差异
- wordpress - NGINX - Wordpress 无限重定向循环