NLog和Log4Net的使用
一、NLog–记录文本日志 1.Nuget引入程序集NLog.Web.AspNetCore 日志记录驱动程序 NLog.Config 配置文件2.修改配置文件
注意:这类默认的配置文件,是只读的,我是复制出来,修改好了,然后替换进去的
3.ASP.NET Core程序支持
public static void Main(string[] args)
{
//读取配置文件
NLogBuilder.ConfigureNLog("CfgFile/NLog.config");
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup();
})
.UseNLog();
4.程序写日志
构造函数注入即可
public class FirstController : Controller
{
private readonly ILogger _ILogger;
private readonly ILoggerFactory _ILoggerFactory;
public FirstController(ILogger logger, ILoggerFactory iLoggerFactory)
{
this._ILogger = logger;
_ILogger.LogInformation($"{this.GetType().FullName} 被构造。。。。LogInformation");
_ILogger.LogError($"{this.GetType().FullName} 被构造。。。。LogError");
_ILogger.LogDebug($"{this.GetType().FullName} 被构造。。。。LogDebug");
_ILogger.LogTrace($"{this.GetType().FullName} 被构造。。。。LogTrace");
_ILogger.LogCritical($"{this.GetType().FullName} 被构造。。。。LogCritical");
this._ILoggerFactory = iLoggerFactory;
ILogger _ILogger2 = _ILoggerFactory.CreateLogger();
_ILogger2.LogInformation("这里是通过Factory得到的Logger写的日志");
}
}
二、Nlog–记录数据库日志
1.Nuget引入程序集
Microsoft.Data.SqlClient2.修改配置文件
3.执行数据库脚本
其实就是生成一个用来保存日志数据的表,还要对应于这个数据库,生成数据库链接字符串配置到配置文件中去
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TABLE [dbo].[NLogManager] (
[Id] [int] IDENTITY(1,1) NOT NULL,
[Application] [nvarchar](50) NOT NULL,
[Logged] [datetime] NOT NULL,
[Level] [nvarchar](50) NOT NULL,
[Message] [nvarchar](max) NOT NULL,
[Logger] [nvarchar](250) NULL,
[Callsite] [nvarchar](max) NULL,
[Exception] [nvarchar](max) NULL,
CONSTRAINT [PK_dbo.Log] PRIMARY KEY CLUSTERED ([Id] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
4.读取配置文件,配置使用Nlog
public static void Main(string[] args)
{
//NLogBuilder.ConfigureNLog("CfgFile/NLog.config");
NLogBuilder.ConfigureNLog("CfgFile/NLog.config");
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup();
})
//支持记录NLog日志
.ConfigureLogging(builder =>
{
builder.ClearProviders(); //删除掉其他已经注册过的ILogger实现程序
builder.SetMinimumLevel(LogLevel.Debug);
})
.UseNLog();
三、NLog配置文件的拓展
配置信息拓展:
Logger标签对,控制输出范围与水平name属性:
指定哪些代码段要输出信息,例如:“ minLevel属性: 指定输出等级,Logging 水平分为以下等级“Trace< writeTo属性: 指定使用那个“Target标签对”来输出信息 Final属性: 这个属性若设置为true,则被当前Logger标签对输出的消息类型,不再被下一个Logger标签对处理。 Name属性: target标签对的名称 Type属性: target的类型,比如target=”File”。还有“Database”,“Mail”,“Network”等类型。 Silverlight使用文件输出,需将项目设置为Out of browser模式 fileName属性: 若target类型为File,则可以指定输出文件名。 例: fileName=”file.txt”, fileName="${basedir}/App_Data/log.txt", fileName="${basedir}/log.txt", fileName ="
s
p
e
c
i
a
l
f
o
l
d
e
r
:
M
y
D
o
c
u
m
e
n
t
s
/
l
o
g
.
{specialfolder:MyDocuments}/log.
specialfolder:MyDocuments/log.{shortdate}.txt" fileName="${logger}.txt" fileName="${shortdate}.txt" fileName="${windows-identity:domain=false}.txt fileName="
s
h
o
r
t
d
a
t
e
/
{shortdate}/
shortdate/{windows-identity:domain=false}.txt" 如果是Silverlight项目可能不能指定输出文件到App_Data目录下。 Layout属性: 格式化输出日志信息。例: layout="
d
a
t
e
:
f
o
r
m
a
t
=
H
H
m
m
s
s
∣
{date:format=HH:mm:ss}|
date:format=HHmmss∣{level}|
s
t
a
c
k
t
r
a
c
e
∣
{stacktrace}|
stacktrace∣{message}" layout="[
d
a
t
e
:
f
o
r
m
a
t
=
y
y
y
y
−
M
M
−
d
d
H
H
m
m
s
s
]
[
{date:format=yyyy-MM-ddHH:mm:ss}][
date:format=yyyy−MM−ddHHmmss][{level}] ${message} ${exception}" layout="
l
o
n
g
d
a
t
e
{longdate}
longdate{callsite} ${level} ${message}" address属性: 指定日志信息输出到哪个网络服务器,例: 注意:配置文件信息,建议设置属性为始终复制 可通过Logger或者LogerFactory注入来写日志log4net
2.增加配置文件
3、ASP.NET Core生效log4net
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup
4.写日志
public class FirstController : Controller
{
private readonly ILogger



