• ASP.NET Core中使用Log4net


    1. 在ASP.NET Core中依赖注入的方式(非LogManager.GetLogger)使用log4net;
    2. Nuget安装2个程序包:log4net、Microsoft.Extensions.Logging.Log4Net.AspNetCore(这个包实现了ILogger和ILoggerProvider这2个接口,.NET Framework不用引用这个程序包);
      在这里插入图片描述
    3. 新增配置文件,网上很多配置样本,我的是每天一个日志文件,以“LOG/年/月”做目录,以当天日期命名日志文件;
      在这里插入图片描述
    <?xml version="1.0" encoding="utf-8" ?>
    <log4net>
    	<appender name="rollingAppender" type="log4net.Appender.RollingFileAppender">
    		<!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->
    		<param name="File" value="Log\" />
    		<!--日志输出到exe程序这个相对目录下-->
    		<param name="AppendToFile" value="true" />
    		<!--输出的日志不会覆盖以前的信息-->
    		<param name="MaxSizeRollBackups" value="100" />
    		<!--备份文件的个数-->
    		<param name="MaxFileSize" value="10240" />
    		<!--当个日志文件的最大大小-->
    		<param name="StaticLogFileName" value="false" />
    		<!--是否使用静态文件名-->
    		<param name="DatePattern" value="yyyy\yyyyMM\yyyyMMdd'.txt'" />
    		<!--日志路径和文件名-->
    		<param name="RollingStyle" value="Date" />
    		<!--文件创建的方式,这里是以Date方式创建-->
    		<!--错误日志布局-->
    		<layout type="log4net.Layout.PatternLayout">
    			<!--
    			输出样式:
    			%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息 
    			%n(new line):换行 
    			%d(datetime):输出当前语句运行的时刻 
    			%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数 
    			%t(thread id):当前语句所在的线程ID 
    			%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等 
    			%c(class):当前日志对象的名称,例如: 
    			%f(file):输出语句所在的文件名。 
    			%l(line):输出语句所在的行号。 
    			%数字:表示该项的最小长度,如果不够,则用空格填充,如“%-5level”表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。			
    			-->
    
    			<!--每条日志末尾的文字说明-->
    			<!--输出格式-->
    			<!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
    			<conversionPattern value="%n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n" />
    
    			<!--  <param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p &lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;"  />
     -->
    		</layout>
    	</appender>
    
    	<root>
    		<priority value="ALL"/>
    		<level value="ALL"/>
    		<appender-ref ref="rollingAppender" />
    	</root>
    
    
    1. 在Program.cs里为HostBuilder配置Log4net
        public class Program
        {
            public static void Main(string[] args)
            {
                CreateHostBuilder(args).Build().Run();
            }
    
            public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                .ConfigureLogging(log =>
                {
                    log.ClearProviders();//清除
                    //过滤掉System和Microsoft开头的命名空间下的组件产生的警告级别以下的日志
                    log.AddFilter("System", LogLevel.Warning);
                    log.AddFilter("Microsoft", LogLevel.Warning);
    
                    //注册log4net中间件
                    log.AddLog4Net("CFGFiles/log4net.config");
                }).ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
                    });
        }
    
    1. 在Home控制器里依赖注入并使用
        public class HomeController : Controller
        {
            private readonly ILogger _Log;
            public HomeController(ILogger<HomeController> logger)
            {
                //Core自带的容器 IServiceCollection 会自动依赖注入的
                this._Log = logger;
            }
            public IActionResult Index()
            {
                _Log.LogInformation($"日志记录 LogInformation:{this.GetType()}");
                return View();
            }
        }
    
    1. 结果截图
      在这里插入图片描述
  • 相关阅读:
    若silverlight程序在访问时不加载或白屏怎么办?直接访问xap文件报错:404怎么办?
    iis7 发布mvc3 遇到的HTTP错误 403.14Forbidden Web 服务器被配置为不列出此目录的内容
    Windows server 2008 64bit计划任务运行使用了excel 2003 32bit .net开发组件的程序遇到的问题
    运行WeCompanySite时遇到Error creating context 'spring.root': Error thrown by a dependency of object 'System.Data.SQLite' defined in 'assembly [Spring.Data,
    javascript中创建对象,并序列化为json,通过$.ajax的提交json数据到后台方法,取值为null的问题
    c# web.config 中SessionState的配置(转载)
    第一次使用Excel2007的Microsoft Query遇到的问题及解决:别名的使用
    开博
    谁更了解用户需求
    开发人员为何应该使用 Mac OS X 兼 OS X 小史
  • 原文地址:https://www.cnblogs.com/zoulei0718/p/14315571.html
Copyright © 2020-2023  润新知