在所有的应用程序中,日志文件是必须的,asp.net5 已经为我们提供了基本的日志记录服务,在Microsoft.Extensions.Logging这个名称空间中,但是框架提供的日志服务不能记录到文件,因此我们需要用到NLog或Log4Net等第三方日志包,记录到文件。
本篇一步一步介绍Nlog组件的使用方法,具体Nlog配置文件的参数规范随后再介绍。
详细步骤:
一、先用Nuget安装Nlog组件Nlog.Web.AspNetCore
二、在项目Program类中,配置使用Nlog:
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using NLog.Web;
namespace PayAPI
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup();
})
.UseNLog(); //配置使用NLog
}
}
三、增加nlog.config配置文件
在配置文件中, 输入配置信息。
四、在Controller控制器中使用Nlog,引入名称控件using Microsoft.Extensions.Logging; 在控制器构造函数中注入logger对象
using Microsoft.Extensions.Logging;
namespace PayAPI.AllInPay.Controllers
{
[Route("api/allin/[controller]")]
[ApiController]
public class BaseController : Controller
{
public readonly ILogger logger;
public BaseControllerILogger _logger)
{
logger = _logger;
}
}
}
五、在其他自定义函数中使用,引入名称空间NLog,可以在函数所在类中声明一个NLog实例
using NLog;
Logger logger = LogManager.GetCurrentClassLogger();
也可以单独写一个NLog类供其他函数使用
using NLog;
using System;
namespace PayAPI.Common
{
public class NLogHelper
{
private static Logger log = LogManager.GetCurrentClassLogger();
public static void Error(object msg, Exception exp = null)
{
if (exp == null)
log.Error(msg);
else
log.Error(msg + "rn " + exp.ToString());
}
public static void Error(string msg)
{
log.Error(msg);
}
public static void APPError(string msg)
{
log.Error(msg);
}
///
///
///
/// 错误描述
/// 错误来源
/// Exception错误
public static void Error(object msg, string msgf = "", Exception exp = null)
{
if (!string.IsNullOrEmpty(msgf))
{
msg = msgf + "rn " + msg;
}
if (exp == null)
log.Error(msg);
else
log.Error(msg + "rn " + exp.ToString());
}
public static void Debug(object msg, Exception exp = null)
{
if (exp == null)
log.Debug(msg);
else
log.Debug(msg + "rn " + exp.ToString());
}
public static void Debug(string msg)
{
log.Debug(msg);
}
///
///
///
/// 错误描述
/// 错误来源
/// Exception错误
public static void Debug(object msg, string msgf = "", Exception exp = null)
{
if (!string.IsNullOrEmpty(msgf))
{
msg = msgf + "rn " + msg;
}
if (exp == null)
log.Debug(msg);
else
log.Debug(msg + "rn " + exp.ToString());
}
//public static void Info(string msg)
//{
// if (!islog) return;
// log.Info(msg);
//}
public static void Info(string msg, Exception exp = null)
{
if (exp == null)
log.Info(msg);
else
log.Info(msg + "rn " + exp.ToString());
}
///
///
///
/// 错误描述
/// 错误来源
/// Exception错误
public static void Info(object msg, string msgf = "", Exception exp = null)
{
if (!string.IsNullOrEmpty(msgf))
{
msg = msgf + "rn " + msg;
}
if (exp == null)
log.Info(msg);
else
log.Info(msg + "rn " + exp.ToString());
}
public static void Warn(string msg)
{
log.Warn(msg);
}
public static void Warn(object msg, Exception exp = null)
{
if (exp == null)
log.Warn(msg);
else
log.Warn(msg + "rn " + exp.ToString());
}
///
///
///
/// 错误描述
/// 错误来源
/// Exception错误
public static void Warn(object msg, string msgf = "", Exception exp = null)
{
if (!string.IsNullOrEmpty(msgf))
{
msg = msgf + "rn " + msg;
}
if (exp == null)
log.Warn(msg);
else
log.Warn(msg + "rn " + exp.ToString());
}
}
}
以上使用Nlog组件,根据NLog配置文件中的设置信息, 会在编译生成目标文件的相对路径下生成logs文件夹来记录日志,日志按天来记录。



