.NET Core中NLog的配置及使用

介绍

NLog是.NET平台下一款日志组件,同时也支持.NET Core。可以直接在项目中安装nuget包使用NLog

以下示例代码中引用了如下NLogNLog.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 写日志文件

你可能感兴趣的:(.NET Core中NLog的配置及使用)