介绍
NLog
是.NET平台下一款日志组件,同时也支持.NET Core
。可以直接在项目中安装nuget包使用NLog
。
以下示例代码中引用了如下NLog
及NLog.Config
两个nuget包,其中后者是用来生成NLog
的配置文件.
NLog配置
insert into log
(Application, Logged, Level, Message,Logger, CallSite, Exception)
values (@Application, @Logged, @Level, @Message,@Logger, @Callsite, @Exception);
需要记录到数据库可使用以下语句创建表:
CREATE TABLE `log` (
`Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`Application` varchar(50) DEFAULT NULL,
`Logged` datetime DEFAULT NULL,
`Level` varchar(50) DEFAULT NULL,
`Message` varchar(512) DEFAULT NULL,
`Logger` varchar(250) DEFAULT NULL,
`Callsite` varchar(512) DEFAULT NULL,
`Exception` varchar(512) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
说明:以上配置中logfile
用于写入文件,database
用于写入数据库(本示例中写入MySql)。
控制台示例Demo
引入命名空间using NLog
。
示例代码
static void Main(string[] args)
{
Logger logger = LogManager.GetCurrentClassLogger();
logger.Trace("Trace Message");
logger.Debug("Debug Message");
logger.Info("Info Message");
logger.Error("Error Message");
logger.Fatal("Fatal Message");
Console.WriteLine("Hello World!");
}
.NET Core WebApi示例Dmeo
StartUp.cs配置:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
//使用NLog作为日志记录工具
loggerFactory.AddNLog();
//引入Nlog配置文件
env.ConfigureNLog("Nlog.config");
app.UseMvc();
}
Program.cs中绑定:
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseNLog()
.UseStartup()
.Build();
使用方式同上述控制台示例:
private readonly Logger logger = LogManager.GetCurrentClassLogger();
// GET api/values
[HttpGet]
public IEnumerable Get()
{
logger.Trace("Trace Message");
logger.Debug("Debug Message");
logger.Info("Info Message");
logger.Error("Error Message");
logger.Fatal("Fatal Message");
return new string[] { "value1", "value2" };
}
本示例源码地址
Github
参考文章及文档
NLog-Github
日志框架对比 NLog VS Log4net
ASP.NET Core 开发-Logging 使用NLog 写日志文件