• asp.net core3.1 实战开发(log4日志的使用)


    首先下nuget下载如下两个包

    1. Microsoft.Extensions.Logging.Debug
    2. Microsoft.Extensions.Logging.Log4.AspNetCore

    在根目录下新建log4net.Config

    <?xml version="1.0" encoding="utf-8"?>
    <log4net>
        <!-- Define some output appenders -->
        <appender name="rollingAppender" type="log4net.Appender.RollingFileAppender">
            <file value="loglog.txt" />
            <!--追加日志内容-->
            <appendToFile value="true" />
    
            <!--防止多线程时不能写Log,官方说线程非安全-->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    
            <!--可以为:Once|Size|Date|Composite-->
            <!--Composite为Size和Date的组合-->
            <rollingStyle value="Composite" />
    
            <!--当备份文件时,为文件名加的后缀-->
            <datePattern value="yyyyMMdd.TXT" />
    
            <!--日志最大个数,都是最新的-->
            <!--rollingStyle节点为Size时,只能有value个日志-->
            <!--rollingStyle节点为Composite时,每天有value个日志-->
            <maxSizeRollBackups value="20" />
    
            <!--可用的单位:KB|MB|GB-->
            <maximumFileSize value="3MB" />
    
            <!--置为true,当前最新日志文件名永远为file节中的名字-->
            <staticLogFileName value="true" />
    
            <!--输出级别在INFO和ERROR之间的日志-->
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="ALL" />
                <param name="LevelMax" value="FATAL" />
            </filter>
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
            </layout>
        </appender>
        <root>
            <priority value="ALL"/>
            <level value="ALL"/>
            <appender-ref ref="rollingAppender" />
        </root>
    </log4net>

    配置方式一:program

    public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
    .ConfigureLogging(loggingBuilder =>
    {
       loggingBuilder.AddLog4Net();//需要配置文件
    })
    .ConfigureWebHostDefaults(webBuilder =>
    {
    webBuilder.UseStartup<Startup>();//靠Startup来串起来MVC
    });

    配置方式二:Startup

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
            {
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
                else
                {
                    app.UseExceptionHandler("/Home/Error");
                    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                    app.UseHsts();
                }
    
                loggerFactory.AddLog4Net();
    
                app.UseSession();
    
                app.UseHttpsRedirection();
                app.UseStaticFiles(new StaticFileOptions()
                {
                    FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot"))
                });
    
                app.UseRouting();
    
                app.UseAuthorization();
    
                app.UseEndpoints(endpoints =>
                {
                    endpoints.MapControllerRoute(
                        name: "default",
                        pattern: "{controller=Home}/{action=Index}/{id?}");
                });
            }

    使用方式

    public class FirstController : Controller
        {
            private readonly ILogger<FirstController> _logger;
            private readonly ILoggerFactory _loggerFactory;
            public FirstController(ILogger<FirstController> logger,
                ILoggerFactory loggerFactory)
            {
                _logger = logger;
                this._loggerFactory = loggerFactory;
            }
    
            public IActionResult Index()
            {
                this._logger.LogWarning("日志1");
                this._loggerFactory.CreateLogger<FirstController>().LogWarning("日志2");
                return View();
            }
        }
  • 相关阅读:
    开始学习设计模式
    <转载>CCeButtonST v1.2
    CRITICAL_SECTION 学习
    简单工厂模式
    《转》Owner Draw Button StepbyStep
    低调 平和
    MFC RTTI (DECLARE_DYNAMIC 及IMPLEMENT_DYNAMIC 宏)
    为程序集延迟签名.
    NBear3.7 在 Suse11 下 的 MonoDevelop2(Alpha2)改造成功。
    Mono开发。
  • 原文地址:https://www.cnblogs.com/xiewenyu/p/13377373.html
Copyright © 2020-2023  润新知