栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

关于Log4Net和NLog使用的帮助文档

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于Log4Net和NLog使用的帮助文档

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.SqlClient
2.修改配置文件

 
  
  

  
  
   
     
    
    
    
    
 
    
 
    
    

    
           
          
          
           
          
          
          
    

  

  
     
    
     
    
     
    
    
    
    
     
    
    
    
    
    
    
    
    
 
    
  


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标签对处理。

Target标签对,输出格式,输出到哪里

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属性:

指定日志信息输出到哪个网络服务器,例:

四、Log4Net记录日志 1.Nuget引入程序集
log4net
2.增加配置文件

注意:配置文件信息,建议设置属性为始终复制



	
	
		
		
		

		
		

		
		
		

		
		

		
		
		
		

		
		

		
		

		
		
			
			
		
		
			
		
	
	
		
		
		
	

3、ASP.NET Core生效log4net
  public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup();
                })
 		    //支持Log4Net
            .ConfigureLogging(builder =>
            {
                builder.AddLog4Net("CfgFile/log4net.Config");
            });
4.写日志

可通过Logger或者LogerFactory注入来写日志

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写的日志"); 
        }
 }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1023884.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号