asp.net core3.1実戦開発(log 4ログの使用)


まずnugetで次の2つのパッケージをダウンロードします.
  • Microsoft.Extensions.Logging.Debug
  • Microsoft.Extensions.Logging.Log4.AspNetCore

  • ルートディレクトリの下にlog 4 netを新規作成します。Config

    <?xml version="1.0" encoding="utf-8"?>
    <log4net>
    	<!-- Define some output appenders -->
    	<appender name="rollingAppender" type="log4net.Appender.RollingFileAppender">
    		<file value="log\log.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>
    

    構成方法一:プログラム

    public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
    .ConfigureLogging(loggingBuilder =>
    {
       loggingBuilder.AddLog4Net();//      
    })
    .ConfigureWebHostDefaults(webBuilder =>
    {
    webBuilder.UseStartup<Startup>();// Startup    MVC
    });
    

    構成方法2: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();
            }
        }